-ldflags 编译优化等

最后更新于:2022-04-02 02:51:23

[TOC] ## 格式 看文档: go tool link —help ``` -ldflags ‘[pattern=]arg list’ -B note: 使用ELF时,添加一个ELF NT_GNU_BUILD_ID note -E entry: 设置entry符号名 -H type: 设置头类型 -I linker: 指定linker为ELF动态链接器 -L directory:添加指定路径是库路径 -R quantum:设置地址舍入限额(默认-1) -T address: 设置文本(text)段地址(默认-1) -V: 打印版本信息并退出 -X definition: 添加形式为importpath.name=value的字符串值定义 -a: 分开显示 -buildid id:指定id为toolchain 的build id。 -buildmode mode:设置构建模式 -c:转储调用图(dump call graph) -compressdwarf:尽可能压缩DWARF(默认开启) -cpuprofile file:将cpu profile信息写入文件file。 -d:禁用动态可执行文件 -debugtramp int: debug trampolines -dumpdep: 转储符号依赖图(dump symbol dependency graph) -extar string: 归档buildmode=c-archive的程序 -extld linker:指定在external mode下使用的链接器 -extldflags flags:给external 链接器传参 -f:忽略版本不匹配 -g:禁用go package日期检查 -h:遇到错误时停止 -importcfg file:从file中读取import 配置信息 -installsuffix suffix:设置包目录前缀 -k symbol: 设置field跟踪符号 -libgcc string: 开启编译器支持的库进行内部链接(使用”none”进行禁用) -linkmode mode: 设置链接模式 -linkshared: 链接Go共享库 -memprofile file:将memory profile信息写入file -memprofilerate rate: 设置runtime.MemProfileRate为rate值 -msan:开启MScan接口(enable MSan interface) -n 转储符号表(dump symbol table) -o file: 把构建成的目标文件写入file -pluginpath string:指定插件的全路径 -r path: 设置ELF动态链接器搜索path -race: 开启竞态检查 -s 禁用符号表 -strictdups int:在读取目标文件期间进行完整性检查,检查重复的符号内容(1=warn 2=err)。 -tmpdir directory: 指定存放定时文件的目录 -u:拒绝不安全的packages -v:打印链接trace -w:禁止生成 DWARF ``` ## 实例 ### -ldflags 编译优化 ``` go build -ldflags "-w -s" -gcflags "all=-N -l" one.go -w 禁止生成debug信息,注意使用该选项后,无法使用 gdb 进行调试 -s 禁用符号表 -N 禁止编译优化 -l 禁止内联,禁止内联也可以一定程度上减小可执行程序大小 ```
';