go 语言最近很火,与时俱进,我也看了看go 的语法。
看起来 go 还是不错的,有很多新的feature。 就下载了代码研究了一下。
go 的 src 目录下面存在三套编译文件:
- window 平台, 所有 bat 文件
- plan9 平台,所有 rc 文件
- unix 类平台,所有bash 文件
以 unix 编译文件为例, go 的编译入口时在 src/all.bash , 这是一个bash 脚步, 这个脚步只是简单的调用了 make.bash 在脚步结束之后,调用 dist banner 输出编译的信息。
set -e
if [ ! -f make.bash ]; then
echo 'all.bash must be run from $GOROOT/src' 1>&2
exit 1
fi
OLDPATH="$PATH"
. ./make.bash "$@" --no-banner
bash run.bash --no-rebuild
PATH="$OLDPATH"
$GOTOOLDIR/dist banner # print build info
dist 是在 make.bash 中生成的一个可执行文件,go 的所有编译都是在这个文件的控制下完成的。 个人认为这并不是一个好的设计,导致维护编译系统的成功过高,如果要修改一下编译选项,往往要修改 dist 源代码。dist 的代码在目录: /src/cmd/dist 下。
dist 这个命令行程序支持如下几个参数:
"banner

本文探讨了Go语言的编译过程,重点分析了src目录下的编译脚本,如all.bash和make.bash。文章指出,Go的编译主要由dist工具控制,该工具在不同平台上使用不同脚本调用。作者认为dist的设计增加了编译系统的复杂性,并建议改进。此外,还介绍了影响Go编译的各种环境变量,如GOROOT_FINAL、GOARCH和GOOS等。
 -- 编译脚本&spm=1001.2101.3001.5002&articleId=38417293&d=1&t=3&u=3413500b11de4a078c840000e086f338)
12万+

被折叠的 条评论
为什么被折叠?



