通过编译源码安装Go
1. 关键点:在当前的设备(系统+硬件)上要有一个可用的Go编译器
golang官网提供了四种构建一个可用Go编译器的方法:
- 下载一个已经发布的go二进制文件
- 使用一个可用的go来进行交叉编译(使用其他设备为此设备编译一个go)
- 使用gccgo
- 从Go 1.4编译一个go,Go1.4是最后一个使用C编写编译器的发行版本
2. 这里使用第四种方式:编译Go1.4
首先下载Go1.4的源码,地址为https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz,这个包经过修改可以在新版本的系统上编译,直接从go官网下载其他未经修改的go1.4源码可能无法编译。解压后放在~/go1.4-bootstrap-20171003文件夹内(不要将文件夹命名为go,避免和其他版本的源码混淆),进入src文件夹,执行以下命令:
./make.bash
编译成功后查看bin文件夹:
ls ../bin/
可以看到bin文件夹下有go和gofmt两个可执行文件,此时已有一个可用的go编译器。此时直接命令行输入go仍然无法找到go,这是由于没有将go所在文件夹加入环境变量中。
3. 下载要编译的Go的源码,这里下载go1.5。
首先将源码解压,放在go1.5文件内,进入src文件夹,执行以下命令:
GOROOT_BOOTSTRAP=~/go1.4-bootstrap-20171003/go/ ./make.bash
编译后查看bin目录,同样有go和fmt两个可执行文件,运行输出版本go1.5。类似的,使用go1.5也可以编译更高版本的go,只需要指定GOROOT_BOOTSTRAP为go1.5的位置。
早期版本的go对gcc版本同样有一定的要求,例如go1.5使用较新的gcc无法编译通过,这是由于新版gcc默认开启了pie,这里编译使用的是gcc4.8。