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
标签:help,tool,编译,参数,build,go From: https://www.cnblogs.com/rebrobot/p/17171726.html