可能的”go build -ldflags”选项有哪些?

huangapple go评论92阅读模式
英文:

What are possible go build -ldflags options?

问题

你可以在Go语言官方文档中找到关于所有可能的Go链接器(go build -ldflags)选项的文档。尝试使用go help build命令可能无法显示有关-ldflags的详细信息。

英文:

Where do I find a documentation about all the possible Go linker (go build -ldflags) options?

I tried go help build but it doesn't show any details about -ldflags.

答案1

得分: 4

你可以在https://pkg.go.dev/cmd/link找到有关Go链接器选项的文档。

此外,还有一个特殊的-ldflags="-help"选项,可以打印出所有可能的golang链接器选项:

$ go build -ldflags="-help" ./main.go

usage: link [options] main.o
  -B note
    	在使用ELF时添加一个ELF NT_GNU_BUILD_ID注释
  -E entry
    	设置入口符号名称
  -H type
    	设置头类型
  -I linker
    	使用linker作为ELF动态链接器
  -L directory
    	将指定的目录添加到库路径
  -R quantum
    	设置地址舍入量子(默认值为-1)
  -T address
    	设置文本段地址(默认值为-1)
  -V	打印版本并退出
  -X definition
    	添加形式为importpath.name=value的字符串值定义
  -a	无操作(已弃用)
  -asan
    	启用ASan接口
  -aslr
    	在Windows上启用ASLR以进行buildmode=c-shared(默认值为true)
  -benchmark string
    	设置为'mem''cpu'以启用阶段基准测试
  -benchmarkprofile base
    	将阶段配置文件写入base_phase.{cpu,mem}prof
  -buildid id
    	将id记录为Go工具链构建id
  -buildmode mode
    	设置构建模式
  -c	转储调用图
  -compressdwarf
    	尽可能压缩DWARF(默认值为true)
  -cpuprofile file
    	将CPU配置文件写入文件
  -d	禁用动态可执行文件
  -debugnosplit
    	转储nosplit调用图
  -debugtextsize int
    	调试文本段最大大小
  -debugtramp int
    	调试跳板
  -dumpdep
    	转储符号依赖图
  -extar string
    	buildmode=c-archive的存档程序
  -extld linker
    	在外部模式下链接时使用链接器
  -extldflags flags
    	将标志传递给外部链接器
  -f	忽略版本不匹配
  -g	禁用go包数据检查
  -h	错误时停止
  -importcfg file
    	从文件中读取导入配置
  -installsuffix suffix
    	设置包目录后缀
  -k symbol
    	设置字段跟踪符号
  -libgcc string
    	用于内部链接的编译器支持库;使用"none"禁用
  -linkmode mode
    	设置链接模式
  -linkshared
    	链接到已安装的Go共享库
  -memprofile file
    	将内存配置文件写入文件
  -memprofilerate rate
    	将runtime.MemProfileRate设置为rate
  -msan
    	启用MSan接口
  -n	转储符号表
  -o file
    	将输出写入文件
  -pluginpath string
    	插件的完整路径名
  -r path
    	将ELF动态链接器搜索路径设置为dir1:dir2:...
  -race
    	启用竞争检测器
  -s	禁用符号表
  -strictdups int
    	在读取对象文件期间对重复符号内容进行健全性检查(1=警告 2=错误)。
  -tmpdir directory
    	使用目录作为临时文件
  -v	打印链接跟踪
  -w	禁用DWARF生成
英文:

You can find documentation about Go linker options at https://pkg.go.dev/cmd/link.

Also, there's a special -ldflags="-help" option that prints all possible golang linker options:

$ go build -ldflags="-help" ./main.go

usage: link [options] main.o
  -B note
    	add an ELF NT_GNU_BUILD_ID note when using ELF
  -E entry
    	set entry symbol name
  -H type
    	set header type
  -I linker
    	use linker as ELF dynamic linker
  -L directory
    	add specified directory to library path
  -R quantum
    	set address rounding quantum (default -1)
  -T address
    	set text segment address (default -1)
  -V	print version and exit
  -X definition
    	add string value definition of the form importpath.name=value
  -a	no-op (deprecated)
  -asan
    	enable ASan interface
  -aslr
    	enable ASLR for buildmode=c-shared on windows (default true)
  -benchmark string
    	set to 'mem' or 'cpu' to enable phase benchmarking
  -benchmarkprofile base
    	emit phase profiles to base_phase.{cpu,mem}prof
  -buildid id
    	record id as Go toolchain build id
  -buildmode mode
    	set build mode
  -c	dump call graph
  -compressdwarf
    	compress DWARF if possible (default true)
  -cpuprofile file
    	write cpu profile to file
  -d	disable dynamic executable
  -debugnosplit
    	dump nosplit call graph
  -debugtextsize int
    	debug text section max size
  -debugtramp int
    	debug trampolines
  -dumpdep
    	dump symbol dependency graph
  -extar string
    	archive program for buildmode=c-archive
  -extld linker
    	use linker when linking in external mode
  -extldflags flags
    	pass flags to external linker
  -f	ignore version mismatch
  -g	disable go package data checks
  -h	halt on error
  -importcfg file
    	read import configuration from file
  -installsuffix suffix
    	set package directory suffix
  -k symbol
    	set field tracking symbol
  -libgcc string
    	compiler support lib for internal linking; use "none" to disable
  -linkmode mode
    	set link mode
  -linkshared
    	link against installed Go shared libraries
  -memprofile file
    	write memory profile to file
  -memprofilerate rate
    	set runtime.MemProfileRate to rate
  -msan
    	enable MSan interface
  -n	dump symbol table
  -o file
    	write output to file
  -pluginpath string
    	full path name for plugin
  -r path
    	set the ELF dynamic linker search path to dir1:dir2:...
  -race
    	enable race detector
  -s	disable symbol table
  -strictdups int
    	sanity check duplicate symbol contents during object file reading (1=warn 2=err).
  -tmpdir directory
    	use directory for temporary files
  -v	print link trace
  -w	disable DWARF generation

huangapple
  • 本文由 发表于 2022年11月22日 01:25:24
  • 转载请务必保留本文链接:https://go.coder-hub.com/74522713.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定