-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 禁止内联,禁止内联也可以一定程度上减小可执行程序大小
```
';