Go -ldflags参数

Jicheng's Blog / 2023-08-22 / 原文

在 Go 语言的编译和链接过程中,-ldflags 是一个非常有用的标志。它允许您传递参数给 Go 链接器。使用 -ldflags,您可以设置在链接阶段的各种选项。

以下是一些使用 -ldflags 的常见场景:

  1. 设置版本信息

    假设您的 Go 项目中有如下的变量:

    var Version string
    

    您可以使用 -ldflags 在编译时为这个变量赋值,这常常用于注入项目的版本信息:

    go build -ldflags "-X main.Version=1.0.0"
    
  2. 减小生成的二进制文件大小

    使用 -s-w 选项可以去掉符号表信息和调试信息,从而生成一个更小的二进制文件:

    go build -ldflags="-s -w"
    
  3. 禁用堆栈溢出检查

    这对于某些低资源的嵌入式系统或 WebAssembly 可能是有用的:

    go build -ldflags="-B"
    

这只是 -ldflags 可以做的事情的一部分。它提供了大量的选项,允许您深入定制链接器的行为。为了完全了解所有可用的选项,您可以查阅 Go 链接器的官方文档或通过命令 go tool link 获取帮助信息。