【问题标题】:Passing an optimization flag to a Go compiler?将优化标志传递给 Go 编译器?
【发布时间】:2017-07-10 03:06:54
【问题描述】:

要编译一个你输入go build myprogram.go的Go程序,你能传递一个优化标志还是代码总是以同样的方式编译?我说的是速度优化、代码大小优化或其他优化。

我知道如果您使用 gccgo,您只需传递 -O2-O0,但我的问题是关于官方 Go 编译器 go

【问题讨论】:

标签: go


【解决方案1】:

实际上没有明确的标志,这个 Go wiki page 列出了 Go 编译器完成的优化,并且在 golang-nuts 组中围绕这个主题进行了讨论。

您可以在 Go gc 编译器中关闭优化和内联以进行调试。

-gcflags '-N -l'
  • -N:禁用优化
  • -l:禁用内联

【讨论】:

    【解决方案2】:

    如果您希望优化二进制大小,您可以通过将-s-w 传递给Go linker 来省略符号表、调试信息和DWARF 符号表:

    $ go build -o mybinary -ldflags="-s -w" src.go
    

    (source blog post which includes some benchmarks)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 2011-10-20
      • 2019-04-14
      • 1970-01-01
      • 2014-03-30
      相关资源
      最近更新 更多