七叶笔记 » golang编程 » 编译安装>=Go 1.5版本源码须知

编译安装>=Go 1.5版本源码须知

近日,笔者在CentOS上编译安装新版本Golang源码(1.14)时,出现了一条报错信息,如下:

ERROR: Cannot find /root/go1.4/bin/go.

Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

想要编译安装的版本是1.14,为什么需先安装低版本的1.4呢?跟随我的脚步一起来看原因吧。

1. 为什么要先安装Go.1.4

带着这个问题,找到一份官方的 Go 1.5自举计划

什么是自举(bootstrapping)?

简言之:用要编译的目标编程语言编写其编译器(或汇编器)。

Go项目组在Go 1.5中将使用Go 1.4进行构建,Go源码树将完全消除所有C的代码。移除C编译器(5c,6c,8c,9c)。剩下的C程序将转成Go语言,包括Go compilers(golang.org/s/go13compiler), 汇编器和连接器(golang.org/s/go13linker)以及cmd/dist。如果这些程序都采用 Go编写,这会引发一个在完整构建源码的启动问题: 需要一个可用的Go工具链来构建Go工具链。

为了构建>=Go 1.5版本,需要先安装Go 1.4到$GOROOT_BOOTSTRAP,默认的$GOROOT_BOOTSTRAP是$HOME/go1.4,我们使用Go 1.4 作为启动的基础版本来编译工具链。

Go 1.4构建过程:

1.使用 gcc 或者 clang 构建 cmd/dist .

2.使用 dist、build 编译器工具链(gcc 或者 clang)

3.NOP

4.使用 dist 构建 cmd/go (as go_bootstrap)

5.使用 go_bootstrap 构建其他的标准库和命令

>=Go 1.5版本建过程:

1.使用Go 1.4构建 cmd/dist

2.使用dist构建编译器工具链

3.使用dist重新构建编译器工具链

4.使用dist构建cmd/go(go_bootstrap)

5.使用go_bootstrap构建其他标准库和命令

2. 编译安装Go 1.4

编译安装Go 1.4版本,大概需要下面几个步骤:

 cd ~ && wget 
tar -zxvf go1.4.linux-amd64.tar.gz
cd go/src/ && ./all.bash
cd ../.. && mv go /root/go1.4  

到这里已经安装好了Go 1.4版本,可以开始安装其他>=1.5的版本。

3. 编译安装>=Go 1.5的版本

安装>=Go 1.5版本源码,步骤也非常简单:

1. 下载源码压缩包

2. 源码包解压缩

3. 进到src目录

4. ./all.bash

5. 设置环境变量

相关文章