go工具集
一、go build
-gcflags: 传递给编译器的参数
-ldflags: 传递给链接器的参数
-work: 查看编译临时目录
-race: 允许数据竞争检测(仅支持amd64)
-n: 查看但不执行编译指令
-x: 查看并执行编译命令
-a: 强制重新编译所有依赖包
-v: 查看被编译的包名,包括依赖包
-p n:并行编译所使用的CPU数,默认为全部
-o:输出文件名
1.1 gcflags 传递给编译器的参数
-B 禁用边界检查
-N 禁用优化
-l 禁用函数内联
-u 禁用unsafe代码
-m 输出优化信息
-S 输出汇编代码
1.2 ldflags 传递给链接器的参数
-w 禁用DRAWF调试信息,但不包括符号表
-s 禁用符号表
-X 修改字符串符号值 -X main.VER ‘0.99’ -X main.S ‘abc’
-H 链接文件类型,其中包括windowsgui、cmd/ld/doc.go。
1.2.1 ldflags 用法
使用方法:【路径,非必需,除非有目录层次】包名.变量
Usage:[path]packege.value
用法示例:
$ go build -ldflags "-X other.VERSION=1.0.0 -X gpxj/other.VERSION=1.0.3 -X main.VERSION=1.0.0 -X 'main.BUILD_TIME=`date`' -X 'main.GO_VERSION=`go version`'" -v -o "server-${VERSION}-${COMMIT:0:7}" server.go
1.3 更多参数:
1.3.1 查看编译参数的帮助文档
go tool compile -h
1.3.2 查看链接参数的帮助文档
go tool link -h
二、go install
和go build参数相同,将生成文件拷贝到bin、pkg目录,优先使用GOBIN环境变量指定的目录。
三、go clean
-n 查看但不执行清理命令
-x 查看并执行清理命令
-i 删除bin,pkg目录下的二进制文件
-r 清理所有依赖包临时目录
四、go get
-d 仅下载,不执行安装命令
-t 下载测试所需依赖包
-u 更新包包括其依赖
-v 查看并执行命令
五、go tool objdump
反汇编可执行文件
go tool objdump -s “main\.\w+” test