go build


go help build

go tool link --help

go tool compile --help

 

 

 

go build -ldflags "-s -w" x.go (go install类似)

  • -s 去掉符号表,然后 panic 的时候 stack trace 就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果。不推荐使用
  • -w 去掉 DWARF 调试信息,得到的程序就不能用 gdb 调试了,如果不打算用 gdb 调试,基本没啥损失。

 

 

ldflag

链接参数,我们通过go tool link --help 查看可用的参数

下面列举一些常用的参数

名称描述
-X 注入变量,通常用于版本信息注入

举例如下

go run -ldflags="-X main.who handsomeboy" main.go


链接:https://juejin.cn/post/7096772208999006244

build flags

build flags在build,clean,get,install,list,run,test等命令下都是通用的

下面记录一些常用的参数

名称描述
-tags ‘tag list’ (常用) 构建出带tag的版本.
-gcflags ‘arg list’ (常用)编译参数go tool compile --help查看所有可用的参数 .
-ldflags ‘flag list’ (常用)链接参数go tool link --help查看可用可用的参数
-mod (常用)readonly,vendor,mod 1.14版本以后,如果在mod文件里面有指定vendor,则默认使用vendor,否者设置为readonly
-race (重要)同时检测数据竞争状态,只支持 linux/amd64, freebsd/amd64, darwin/amd64 和 windows/amd64.
-trimpath (重要)删除编译包含的固定路径信息,如 -trimpath=$GOPATH,报错信息打印时只会包含文件的相对路径
-modfile 指定使用的modfile文件,但go.mod文件依然是需要的,用于确认编译包的根目录,gosum依然是需要的,如传入的xx.mod, 则需要或对应生成为 xx.sum
-n 仅打印输出build需要的命令,不执行build动作(少用)。
-p n 开多少核cpu来并行编译,默认为本机CPU核数(少用)。
-v 打印出被编译的包名(少用).
-work 打印临时工作目录的名称,并在退出时不删除它(少用)。
-x 同时打印输出执行的命令名(-n)(少用).

gcflag

编译参数,我们通过go tool compile -help包含哪些

下面列举一些常用的参数

名称描述
-m (常用)打印优化信息
-N 禁用优化 (debug时用到)
-l 禁止内联优化 (debug时用到)
-c 指定编译时的的并发数,默认为1
-L 错误信息中打印文件全名

gcflag传入的方式为: -gcflag="pattern= args",其中pattern代表取值分别为 main,all,std,...,用于指定编译参数作用的范围,args则为对应的编译参数


 
参考:
链接:https://juejin.cn/post/7096772208999006244

 

 

posted @   redrobot  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示