减小编译后可执行文件的大小

go build -ldflags '-w -s'

-w 禁止生成 debug 信息,注意使用该选项后,无法使用 gdb 进行调试。

-s 禁用符号表

可以使用 go tool link –help 查看 ldflags 各参数含义。

禁止优化和内联

go build -gcflags '-N -l'

-N 禁止编译优化

-l 禁止内联,禁止内联也可以一定程度上减小可执行程序大小

可以使用 go tool compile –help 查看 gcflags 各参数含义。

-m 打印出编译器做的优化决策,比如内联和逃逸分析

-l -N 禁用所有的优化

-S 打印汇编代码

其他

go build -a 强行对所有涉及到的代码进行重新构建
go build -n 打印编译期间所用到的其他命令但是并不真正执行它们

参考 go build 常见编译优化