根據官方文檔 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重編自己
- go編譯其他包和指令