如何快速,科学的配置GO语言在线编译c语言Android环境

轻松搭建基于go1.5开发Android应用的环境 | Go语言中文网 | Golang中文社区 | Golang中国
我的图书馆
轻松搭建基于go1.5开发Android应用的环境 | Go语言中文网 | Golang中文社区 | Golang中国
轻松搭建基于go1.5开发Android应用的环境
阅读 7208 次&
有兴趣的同学欢迎来一起玩:
go1.5beta2已经发布,正式版将在8月份发布.而早在go1.4就已发布了golang/mobile项目用以实现Android应用的开发.当前gomobile的环境部署已经相对成熟了.但项目声明必须基于go1.5,所以go1.4的同学必须要升级.因为在go1.4执行gomobile init的时候是不能通过的.
注:如果没有网络权限访问golang.org,请创建$GOPATH//golang的软链接为$GOPATH/src/golang.org/x,并且后续go get的时候把golang.org/x/ 替换为 /golang/
第一步. 部署go1.5beta2
下载go1.5beta2的linux安装包,并按照官网部署到/usr/local. 配置/usr/local/go/bin 到$PATH中,如下写入/etc/profile 或$HOME/.profile
export PATH=$PATH:/usr/local/go/bin
然后还需要将其他golang环境变量加入$HOME/.profile
exprot GOPATH=$HOME/gocode/
export PATH=$PATH:$GOPATH/bin
第二步 部署golang/mobile
参照执行以下命令
$ go get golang.org/x/mobile/cmd/gomobile
$ gomobile init -v
如果提示没有权限如下
#Building standard library for android/arm.
go install runtime: mkdir /usr/local/go/pkg/android_arm/: permission denied
gomobile: go install std for android/arm failed: exit status 1
需要授权/usr/local/go/pkg给当前用户
# chown -R myname:myname /usr/local/go/pkg
然后再次执行
$ gomobile init -v
Downloading https://dl.google.com/go/mobile/gomobile-ndk-r10e-linux-x86_64.tar.gz.
Downloading https://dl.google.com/go/mobile/gomobile-openal-soft-1.16.0.1.tar.gz.
Building standard library for android/arm.
sync/atomic
testing/quick
net/rpc/jsonrpc
Done, build took 23s.
第三步 使用go run 在桌面测试程序
$ cd $GOPATH/src/golang.org/x/mobile/example/basic
$ go run main.go
第四步 使用gomobile直接生成apk格式Android应用.
$ cd $GOPATH/src/golang.org/x/mobile/example/basic
$ gomobile build
main.go basic.apk
或者连接android手机,确保adb shell可以登录手机之后,直接编辑并安装APK
$ cd $GOPATH/src/golang.org/x/mobile/example/basic
$ gomobile install
最后安装到Android L
除network.apk无法启动外,basic audio和sprite都正常.甚至/mmchugh/gomobile-examples的cube也运行正常.以下为截图
手机截图 basic/audio/sprite/cube
weizhe86于
09:34:49 +0800 CST 修改了本主题
馆藏&23636
TA的最新馆藏
喜欢该文的人也喜欢拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3b4c1b0c74a643d1-ua98).
重新安装浏览器,或使用别的浏览器go 语言跨平台编译android版 - CSDN博客
go 语言跨平台编译android版
系统:centos7 & go版本1.6.3&
golang环境安装见
1.首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件。
$ &cd /usr/lib/golang/src/
$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash
如果是 Windows 则运行:
$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash
如果是 arm andriod(arm是支持andriod的) &则运行:
$ CGO_ENABLED=0 GOOS=arm GOARCH=amd64 ./make.bash
会报以下错误:
##### Building Go bootstrap tool.
ERROR: Cannot find /root/go1.4/bin/_/go.
ERROR: or /root/go1.4/bin/_/go.
Set $GOROOT_BOOTSTRAP to a working Go tree &= Go 1.4.
问题定位:
由于编译GO 1.6版本以上的需要依赖GO 1.4版本的二进制,并且需要把GOROOT_BOOTSTRAP的路径设置为1.4版本GO的根目录,这样它的bin目录就可以直接使用到1.4版本的GO
所以解决办法:
下载go1.4的源码 & 下载地址:/download
&go1.4.2.linux-amd64.tar.gz&
解压&/root/go1.4/go
设置环境变量(此处临时设置用export)
&export GOROOT_BOOTSTRAP=&/root/go1.4/go/&
进入golang1.6 的路径&cd /usr/lib/golang/src/
$ CGO_ENABLED=0 GOOS=arm GOARCH=amd64 ./make.bash &
2.编译程序,例如android版本
$ CGO_ENABLED=0 GOOS=arm GOARCH=amd64 go build
之所以需要执行 ./make.sh 并不是重新安装Go语言,而是生成交叉编译(目标平台)需要的工具和文件。这些只是在第一次交叉编译的时候做。之后就不需要了。
/northbright/Notes/blob/master/Golang/china/install-go1.6-from-source-on-centos7-in-china.md
/topics/21
本文已收录于以下专栏:
相关文章推荐
root@working-srv:/data/code/src# tree project workspace/
└── pro.go
workspace/
└── main...
本文是go语言android应用开发实战中的第二篇,主要介绍gomobile如何编码出android动态库及过程中的坑
本文是go语言android应用开发实战中的第一篇,主要介绍gomobile环境搭建,下一篇会介绍如何编译出对应的动态库相关内容
Android Studio目录结构
新建工程项目后AS的Product目录结构如下所示:.idea://AS生成的工程配置文件,类似Eclipse的project.properties。
必须写在前面:从Java转向Kotlin,只需要几天时间!
本篇是kotlin开发Android系列教程的最后一篇。前面几篇介绍了kotlin的基本语法、与java的不同之处等。在本篇文章中,将使用...
go语言在1.4版本就提供了编辑android应用的功能,但当时最简单的方法是使用docker来配置,而且在编辑和导入过程也不是很方便。
在go语言1.5以后提供了gomobile工具,使用该工具后...
如何用Go语言写跨平台的用于手机上的应用,我们以Android为例分析本地应用的写法。
Go 语言开发 Android 程序
转自:/articles/9620
安装 Go 1.5 以上版本,具体安装步骤见官网 ht...
去年12月中旬,go已经正式支持android平台!虽然,目前只是初步支持,相应的开发还在紧罗密鼓的进行中。但是仍然挡不住试用一把的冲动。目前go的代码是通过java的jni接口来调用的,go的代码会...
golang程序的跨平台编译
最近写的golang服务器程序, 开始在X86_64上面运行,后来要求在ARM平台上执行,查阅了若干资料反复尝试才完成任务,程序可以在ARM上面执行,将关键点记录以备将来...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Go语言开发环境搭建详解 - 简书
Go语言开发环境搭建详解
欢迎扫码关注公众号flysnow_org,第一时间看后续文章。觉得有帮助的话,顺手分享到朋友圈吧,感谢支持。
前段时间写了好几篇关于Go语言的文章,有入门的Go系统介绍,也有比较深入的网络代理分析实现,读者们看了也给予了很多好评,这里非常感谢。
有读者来信(微信公众号消息)说能不能写一篇关于Go语言环境的配置搭建,这样对于想学Go语言的可以快速的配置起来一个环境。这个的确是我忽略了,按照我写书的逻辑,也是先有环境搭建,才能有语言功能介绍,这个直接把Go语言的开发环境搭建等配置跳过去实在不应该,所以这篇特意针对Go语言的开发环境搭建、配置、编辑器选型、不同平台程序生成等做了详细的介绍。
要搭建Go语言开发环境,我们第一步要下载go的开发工具包,目前最新稳定版本是v1.7.4。Go为我们所熟知的所有平台架构提供了开发工具包,比如我们熟知的Linux、Mac和Windows,其他的还有FreeBSD等。
我们可以根据自己的机器操作系统选择相应的开发工具包,比如你的是Windows 64位的,就选择windows-amd64的工具包;是Linux 32位的就选择linux-386的工具包。可以自己查看下自己的操作系统,然后选择,Mac的现在都是64位的,直接选择就可以了。
开发工具包又分为安装版和压缩版。安装版是Mac和Windows特有的,他们的名字类似于:
go1.7.4.darwin-amd64.pkg
go1.7.4.windows-386.msi
go1.7.4.windows-amd64.msi
安装版,顾名思义,双击打开会出现安装向导,让你选择安装的路径,帮你设置好环境比安康等信息,比较省事方便一些。
压缩版的就是一个压缩文件,可以解压得到里面的内容,他们的名字类似于:
go1.7.4.darwin-amd64.tar.gz
go1.7.4.linux-386.tar.gz
go1.7.4.linux-amd64.tar.gz
go1.7.4.windows-386.zip
go1.7.4.windows-amd64.zip
压缩版我们下载后需要解压,然后自己移动到要存放的路径下,并且配置环境变量等信息,相比安装版来说,比较复杂一些,手动配置的比较多。
根据自己的操作系统选择后,就可以下载开发工具包了,Go语言的官方下载地址是
可以打开选择版本下载,如果该页面打不开,或者打开了下载不了,可以使用镜像网站
,打开后搜索或者找到Golang,选择相应的版本下载,这个镜像网站会同步更新官方版本,基本上都是最新版,可以放心使用。
Linux下安装
我们以Ubuntu 64位为例进行演示,CentOS等其他Linux发行版大同小异。
下载go1.7.4.linux-amd64.tar.gz后,进行解压,你可以采用自带的解压软件解压,如果没有可以在终端行使用tar命令行工具解压,我们这里选择的安装目录是/usr/local/go,可以使用如下命令:
tar -C /usr/local -xzf go1.7.4.linux-amd64.tar.gz
如果提示没有权限,在最前面加上sudo以root用户的身份运行。运行后,在/usr/local/下就可以看到go目录了。如果是自己用软件解压的,可以拷贝到/usr/local/go下,但是要保证你的go文件夹下是bin、src、doc等目录,不要go文件夹下又是一个go文件夹,这样就双重嵌套了。
然后就要配置环境变量了,Linux下又两个文件可以配置,其中/etc/profile是针对所有用户都有效的;$HOME/.profile是针对当前用户有效的,可以根据自己的情况选择。
针对所有用户的需要重启电脑才可以生效;针对当前用户的,在终端里使用source命令加载这个$HOME/.profile即可生效。
source ~/.profile
使用文本编辑器比如VIM编辑他们中的任意一个文件,在文件的末尾添加如下配置保存即可:
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
其中GOROOT环境变量表示我们GO的安装目录,这样其他软件比如我们使用的Go开发IDE就可以自动的找到我们的Go安装目录,达到自动配置Go SDK的目的。
第二句配置是把/usr/local/go/bin这个目录加入到环境变量PATH里,这样我可以在终端里直接输入go等常用命令使用了,而不用再加上/usr/local/go/bin这一串绝对路径,更简洁方便。
以上配置好之后,我们打开终端,属于如下命令,就可以看到go的版本等信息了。
~ go version
go version go1.7.4 linux/amd64
这就说明我们已经安装go成功了,如果提示go这个命令找不到,说明我们配置还不对,主要在PATH这个环境变量,仔细检查,直到可以正常输出为止。
Mac分为压缩版和安装版,他们都是64位的。压缩版和Linux的大同小异,因为Mac和Linux都是基于Unix,终端这一块基本上是相同的。
压缩版解压后,就可以和Linux一样放到一个目录下,这里也以/usr/local/go/为例。在配置环境变量的时候,针对所有用户和Linux是一样的,都是/etc/profile这个文件;针对当前用户,Mac下是$HOME/.bash_profile,其他配置都一样,包括编辑sudo权限和生效方式,最后在终端里测试:
~ go version
go version go1.7.4 darwin/amd64
Mac安装版下载后双击可以看到安装界面,按照提示一步步选择操作即可。安装版默认安装目录是/usr/local/go,并且也会自动的把/usr/local/go/bin目录加入到PATH环境变量中,重新打开一个终端,就可以使用go version进行测试了,更快捷方便一些。
Windows下安装
Windows也有压缩版和安装版,又分为32和64位以供选择,不过目前大家都是64位,选择这个更好一些。
Window的压缩版是一个ZIP压缩包,下载后使用winrar等软件就可以解压,解压后要选择一个存放目录,比如c:\Go下,这个c:\Go就是Go的安装目录了,他里面有bin、src、doc等目录。
然后就是环境变量的配置,Window也和Linux一样分为针对所有用户的系统变量,和针对当前用户的用户变量设置,可以自行选择,比如系统变量,针对所有用户都有效。
以Window 7为例,右击我的电脑-&属性会打开系统控制面板,然后在左侧找到高级系统设置点击打开,会在弹出的界面最下方看到环境变量按钮,点击它,就可以看到环境变量配置界面了。上半部分是用户变量配置,下半部分是系统变量配置。
我们在系统变量里点击新建,变量名输入GOROOT,变量值是我们刚刚安装的go路径c:\Go,这样就配置好了GO目录的安装路径了。
然后修改PATH系统变量,在变量值里添加%%GOROOT\bin路径,和其他PATH变量以;(分号,Linux下是冒号)分割即可。这样我们就可以在CMD里直接输入go命令使用了。
打开我们的终端,输入go version测试下,好了的话就可以看到输出的信息了。
Window的安装版相比来说就比较简单一些,双击就可以按照提示一步步安装,默认安装路径是c:\Go,并且会配置好PATH环境变量,可以直接打开CMD终端使用。
设置工作目录
工作目录就是我们用来存放开发的源代码的地方,对应的也是Go里的GOPATH这个环境变量。这个环境变量指定之后,我们编译源代码等生成的文件都会放到这个目录下,GOPATH环境变量的配置参考上面的安装Go,配置到/etc/profile或者Windows下的系统变量里。
这个工作目录我们可以根据自己的设置指定,比如我的Mac在$HOME/code/go下,Window的可以放到d:\code\go下等。该目录下有3个子目录,他们分别是:
├── bin
├── pkg
└── src
bin文件夹存放go install命名生成的可执行文件,可以把$GOPATH/bin路径加入到PATH环境变量里,就和我们上面配置的$GOROOT/bin一样,这样就可以直接在终端里使用我们go开发生成的程序了。
pkg文件夹是存在go编译生成的文件。
src存放的是我们的go源代码,不同工程项目的代码以包名区分。
go项目工程结构
配置好工作目录后,就可以编码开发了,在这之前,我们看下go的通用项目结构,这里的结构主要是源代码相应地资源文件存放目录结构。
我们知道源代码都是存放在GOPATH的src目录下,那么多个多个项目的时候,怎么区分呢?答案是通过包,使用包来组织我们的项目目录结构。有过java开发的都知道,使用包进行组织代码,包以网站域名开头就不会有重复,比如我的个人网站是flysnow.org,我就可以以·flysnow.org·的名字创建一个文件夹,我自己的go项目都放在这个文件夹里,这样就不会和其他人的项目冲突,包名也是唯一的。
如果没有个人域名,现在流行的做法是使用你个人的,因为每个人的是唯一的,所以也不会有重复。
├── golang.org
├── gopkg.in
如上,src目录下跟着一个个域名命名的文件夹。再以文件夹为例,它里面又是以github用户名命名的文件夹,用于存储属于这个github用户编写的go源代码。
├── afero
├── cast
├── cobra
├── fsync
├── hugo
├── jwalterweatherman
├── nitro
├── pflag
└── viper
那么我们如何引用一个包呢,也就是go里面的import。其实非常简单,通过包路径,包路径就是从src目录开始,逐级文件夹的名字用/连起来就是我们需要的包名,比如:
"/spf13/hugo/commands"
Hello World
都准备好了,让我们创建一个hello项目,测试一下。我的项目的路径为src/flysnow.org/hello/。
package main
func main() {
fmt.Println("Hello World")
Go版Hello World非常简单。在src/flysnow.org/hello/目录下运行go run main.go命令就可以看到打印的输出Hello World,下面解释下这段代码。
package 是一个关键字,定义一个包,和Java里的package一样,也是模块化的关键。
main包是一个特殊的包名,它表示当前是一个可执行程序,而不是一个库。
import 也是一个关键字,表示要引入的包,和Java的import关键字一样,引入后才可以使用它。
fmt是一个包名,这里表示要引入fmt这个包,这样我们就可以使用它的函数了。
main函数是主函数,表示程序执行的入口,Java也有同名函数,但是多了一个String[]类型的参数。
Println是fmt包里的函数,和Java里的system.out.println作用类似,这里输出一段文字。
整段代码非常简洁,关键字、函数、包等和Java非常相似,不过注意,go是不需要以;(分号)结尾的。
安装的意思,就是生成可执行的程序,以供我们使用,为此go为我们提供了很方便的install命令,可以快速的把我们的程序安装到$GOAPTH/bin目录下。
go install flysnow.org/hello
打开终端,运行上面的命令即可,install后跟全路径的包名。 然后我们在终端里运行hello就看到打印的Hello World了。
Hell World
跨平台编译
以前运行和安装,都是默认根据我们当前的机器生成的可执行文件,比如你的是Linux 64位,就会生成Linux 64位下的可执行文件,比如我的Mac,可以使用go env查看编译环境,以下截取重要的部分。
GOARCH="amd64"
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
注意里面两个重要的环境变量GOOS和GOARCH,其中GOOS指的是目标操作系统,它的可用值为:
一共支持10中操作系统。GOARCH指的是目标处理器的架构,目前支持的有:
一共支持9中处理器的架构,GOOS和GOARCH组合起来,支持生成的可执行程序种类很多,具体组合参考。如果我们要生成不同平台架构的可执行程序,只要改变这两个环境变量就可以了,比如要生成linux 64位的程序,命令如下:
GOOS=linux GOARCH=amd64 go build flysnow.org/hello
前面两个赋值,是更改环境变量,这样的好处是只针对本次运行有效,不会更改我们默认的配置。
获取远程包
go提供了一个获取远程包的工具go get,他需要一个完整的包名作为参数,只要这个完成的包名是可访问的,就可以被获取到,比如我们获取一个CLI的开源库:
go get -/spf13/cobra/cobra
就可以下载这个库到我们$GOPATH/src目录下了,这样我们就可以像导入其他包一样import了。
特别提醒,go get的本质是使用源代码控制工具下载这些库的源代码,比如git,hg等,所以在使用之前必须确保安装了这些源代码版本控制工具。
Go编辑器推荐
Go采用的是UTF-8的文本文件存放源代码,所以原则上你可以使用任何一款文本编辑器,这里推荐几款比较流行的。
对于新手来说,我推荐功能强大的IDE,功能强大,使用方便,比如jetbrains idea+golang插件,上手容易,而且它家的IDE都一样,会一个都会了,包括菜单、快捷键等。值得高兴的是jetbrains针对Go这门语言推出了专用IDE gogland,也足以证明go的流行以及jetbrains的重视。goglang地址为 ,可以前往下载使用。
其次可以推荐微软的VS Code以及Sublime Text,这两款编辑器插件强大,快捷键方便,都对Go支持的很好,也拥有大量的粉丝。
最后推荐老牌的VIM,这个不用多介绍,大家都知道。
到这里,整个Go开发环境就详细介绍完了,不光有环境安装搭建,还有目录结构、常用命令使用等都进行了介绍,这篇文章看完后,已经入门了Go了,剩下的再看看Go的语法和库,就可以很流畅的编写Go程序了。
欢迎扫码关注公众号flysnow_org,第一时间看后续文章。觉得有帮助的话,顺手分享到朋友圈吧,感谢支持。
更多阅读推荐
微信公众号flysnow_org,欢迎关注。
Android资深工程师 ,Go和Java打杂师,《Android Gradle权威指南》作者。
Android官方技术文档译者,擅长研发、管理。}

我要回帖

更多关于 c语言编译环境 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信