根据官方文档https://golang.org/doc/install/source
编译go源码需要
$ cd src
$ ./all.bash
拨拉开src/all.bash文件可以看到如下步骤
- 加载make.bash的内容
- 执行run.bash
- 执行dist banner命令
make.bash编译/cmd/dist,
run.bash使用dist编译exec go tool dist test -rebuild "$@"
非常神奇的是,对于1.5之前的版本,dist是用C写的,编译的顺序
- gcc编译dist,
- dist编译go
但是在1.5之后的版本,dist也是用GO写的,所以编译的顺序是 - gcc编译dist
- dist编译工具链
- dist重编自己
- dist编译go
- go编译其他包和命令