系统: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.
cmd/dist
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的源码 下载地址:http://www.golangtc.com/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语言,而是生成交叉编译(目标平台)需要的工具和文件。这些只是在第一次交叉编译的时候做。之后就不需要了。
参考:
https://github.com/northbright/Notes/blob/master/Golang/china/install-go1.6-from-source-on-centos7-in-china.md
http://studygolang.com/topics/21