在1.4版本之前,golang还没有实现自举,其构建工具采用C来实现,由于runtime包含asm、c、go三种代码,再加上不同的cpu架构,因此出现了一系列构建工具,(5a 5c 5g 5l),(6a 6c 6g 6l),(8a 8c 8g 8l)
5: ARM, 6: AMD64, 8: Intel386
a: plan9 asm 汇编器
c: plan9 c 编译器
g: go 编译器
l: go 链接器
在1.5版本开始,golang实现了自举,其构建工具完全采用自身语言go来实现,此时的runtime只包含少量的asm,并且整合了不同的cpu架构,最终的构建工具只有asm、compile、link
因此,源码编译安装version<=1.4,只需要系统包含c语言编译器即可,安装version>1.4版本之前,必须先安装早期的版本。下面分别从1.4版本和1.17.5两个版本分别介绍其源码安装过程:
- 1.4版本
cd ~/package
wget https://codeload.github.com/golang/go/tar.gz/refs/tags/go1.4
tar zxvf go-go1.4.tar.gz go1.4
cd go1.4/src/
CGO_ENABLED=0 ./all.bash
修改~/.bash_profile如下:
export GOROOT=~/package/go1.4
export GOPATH=~/go
export GOPROXY='https://goproxy.cn'
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
GOROOT:go根目录
GOPATH:go的第三方库的安装目录,可任意指定已存在的目录
GOPROXY:go的国内代理,指定的话,安装go的官方库会比较快
- 1.17.5版本
cd ~/package
wget https://codeload.github.com/golang/go/tar.gz/refs/tags/go1.17.5
tar zxvf go-go1.17.5.tar.gz go1.17.5
export GOROOT_BOOTSTRAP=~/package/go1.4
cd go1.17.5/src
./all.bash
若想用此版本,只需把~/.bash_profile文件中的go1.4改成go1.17.5即可
注意:~/.bash_profile修改后若想生效,需执行
source ~/.bash_profile