BetaThis is a live doc! Anyone with edit access can make updates in real time without having to publish.
By Bryan
使用指定 tag 编译
go build -tags 'tagA,tagB'-tags 指定编译使用的 tag,多个使用逗号分隔
早期多个 tag 使用空格分隔,但现在该行为已经 deprecated
注入指定变量
go build -ldflags '-X "my.pkg/version.Version=1.1.1" -X "my.pkg/version.Commit=abcde"'-X 以 importpath.name=value 的形式指定要设置的变量
name 必须是一个 string 类型的变量(可以导出或不导出)
开启 Race Detector
go build -race-race 启用 DataRace Detector(仅部分系统可用)
减少最终可执行文件大小(移除符号)
go build -ldflags '-w -s'-w 禁用 DWARF 信息( → 无法使用 gdb 调试)
-s 移除符号表
逃逸分析
go build -gcflags '-m -l' -m 打印优化计划
-l 停用内联
关闭所有优化
go build -gcflags '-N -l'-N 关闭编译器优化
-l 停用内联