英文:
Passing an optimization flag to a Go compiler?
问题
要编译Go程序,您可以输入go build myprogram.go
,您可以同时传递优化标志,还是代码总是以相同的方式编译?我指的是速度优化、代码大小优化或其他优化。
我知道如果您使用gccgo
,只需传递-O2
或-O0
,但我问的是关于官方Go编译器go
的问题。
英文:
To compile a Go program you type go build myprogram.go
, can you pass an optimization flags along or the code is always compiled in the same way? I am talking about speed optimizations, code size optimizations or other optimizations.
I know if you use gccgo
you just pass -O2
or -O0
but my question is about an official Go compiler go
.
答案1
得分: 27
实际上没有明确的标志,这个Go维基页面列出了Go编译器所做的优化,并且在golang-nuts组中就这个主题进行了讨论。
你可以在Go gc编译器中关闭优化和内联以进行调试。
-gcflags '-N -l'
-N
:禁用优化-l
:禁用内联
英文:
Actually no explicit flags, this Go wiki page lists optimizations done by the Go compiler and there was a discussion around this topic in golang-nuts groups.
You can turn off optimization and inlining in Go gc compilers for debugging.
-gcflags '-N -l'
-N
: Disable optimizations-l
: Disable inlining
答案2
得分: 11
如果你想优化二进制文件的大小,可以通过在Go链接器中传递-s
和-w
来省略符号表、调试信息和DWARF符号表:
$ go build -o mybinary -ldflags="-s -w" src.go
英文:
If you're looking to optimize the binary size, you can omit the symbol table, debug information and the DWARF symbol table by passing -s
and -w
to the Go linker:
$ go build -o mybinary -ldflags="-s -w" src.go
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论