【发布时间】:2017-07-10 03:06:54
【问题描述】:
要编译一个你输入go build myprogram.go的Go程序,你能传递一个优化标志还是代码总是以同样的方式编译?我说的是速度优化、代码大小优化或其他优化。
我知道如果您使用 gccgo,您只需传递 -O2 或 -O0,但我的问题是关于官方 Go 编译器 go。
【问题讨论】:
-
golang.org/cmd/compile 可以选择禁用优化。
标签: go
要编译一个你输入go build myprogram.go的Go程序,你能传递一个优化标志还是代码总是以同样的方式编译?我说的是速度优化、代码大小优化或其他优化。
我知道如果您使用 gccgo,您只需传递 -O2 或 -O0,但我的问题是关于官方 Go 编译器 go。
【问题讨论】:
标签: go
实际上没有明确的标志,这个 Go wiki page 列出了 Go 编译器完成的优化,并且在 golang-nuts 组中围绕这个主题进行了讨论。
您可以在 Go gc 编译器中关闭优化和内联以进行调试。
-gcflags '-N -l'
-N:禁用优化-l:禁用内联【讨论】:
如果您希望优化二进制大小,您可以通过将-s 和-w 传递给Go linker 来省略符号表、调试信息和DWARF 符号表:
$ go build -o mybinary -ldflags="-s -w" src.go
【讨论】: