go有两套编译工具链,分别是从plant9移植过来的gc和依赖gcc的gccgo。
官方为gc工具链提供了二进制安装包和源码, 可以根据需要选择一种安装方式。gc工具链对操作系统和CPU类型的支持情况如下:
操作系统CPU类型备注FreeBSD 8 or later amd64, 386, arm Debian GNU/kFreeBSD not supported; FreeBSD/ARM needs FreeBSD 10 or later
Linux 2.6.23 or later with glibc amd64, 386, arm CentOS/RHEL 5.x not supported; no binary distribution for ARM yet
Mac OS X 10.6 or later amd64, 386 use the gcc** that comes with Xcode**
Windows XP or later amd64, 386 use MinGW gcc. No need for cygwin or msys.
对于其它操作系统或CPU类型,需要从源码编译gc工具链或使用gccgo。
如果使用cgo,则需要安装gcc;
Xcode command tool是Xcode的一部分,它包含gcc编译器, 可以从Xcode的Componts->Downloads对话框中下载该tool。
安装 二进制安装从官网下载二进制包如*go1.6.linux-amd64.tar.gz*
解压到/usr/local目录:
$ tar -C /usr/local -xzf go$VERSION.$GOOS-$GOARCH.tar.gz
将/usr/local/go/bin添加到PATH中:
$ export PATH=$PATH:/usr/local/go/bin
go默认假设被安装到/usr/loca/go,如果被安装到其它位置,则需要设置GOROOT环境变量。例如,二进制包被解压到$HOME目录,则设置如下:
$ export GOROOT=$HOME/go $ export PATH=$PATH:$GOROOT/bin
注意:只有当将go安装到非/usr/local目录时才需要设置GOROOT变量。
从源码编译安装 安装Go编译器二进制文件1.4版本后的Go工具链是用go语言写的,如果要构建它,系统需要安装Go编译器:
如果系统已经有>= 1.4版本的go工具链,则将GOROOT_BOOTSTRAP变量设置为所在目录;
$ unset GOROOT GOPATH #如果系统已经有go工具链,需要清除`$GOPATH`和`$GOROOT`变量; $ export GOROOT_BOOTSTRAP=$HOME/local/go
否则,需要下载1.4版本的go工具链,该版本是C写的,只依赖gcc和glibc;可以下载二进制或编译并安装源码,然后将GOROOT_BOOTSTRAP变量设置为所在目录;
$ cd /tmp $ git clone git@github.com:golang/go.git $ cd go $ git checkout -b 1.4.3 go1.4.3 $ cd src $ ./all.bash #编译go 1.4.3 $ export GOROOT_BOOTSTRAP=/tmp/go/go #GOROOT\_BOOTSTRAP缺省值为`$HOME/go1.4`,如果安装到其它位置,则需要重新定义;
使用GOROOT_BOOTSTRAP变量指定Go工具链位置(如果位于$HOME/go1.4,则无需指定)后,可以执行源码中的bootstrap.bash脚本,生成支持$GOOS、$GOARCH指定的目标操作系统和架构的新工具链:
$ GOOS=linux GOARCH=ppc64 ./bootstrap.bash
该命令生成的工具链位于../../go-${GOOS}-${GOARCH}-bootstrap.目录,可以设置为变量GOROOT_BOOTSTRAP的值,用于后续编译源码;
编译最新的go源码
设置git代理:
$ git config http.proxy :passwd@host:port $ git config https.proxy https://user:passwd@host:port
设置go get代理
$ export http_proxy=http://user:passwd@host:port
获取源代码:
直接下载或者从git仓库clone。
从git代码库clone:
$ git clone https://go.googlesource.com/go #需FQ $ git clone https://github.com/golang/go.git $ cd go $ git checkout go1.6 #也可以切换到其它分支如master
编译源代码
$ pwd /tmp/ $ cd go/src $ ./all.bash #使用`GOROOT_BOOTSTRAP`指定的go 1.4版本以上的工具链来编译go源码 ... ALL TESTS PASSED --- Installed Go for linux/amd64 in /tmp/go Installed commands in /tmp/go/bin *** You need to add /tmp/go/bin to your PATH.