减小golang编译出的二进制文件大小

go build编译出的文件都很大,一个hello world就要2m,我们可以在编译时加上如下参数:

go build -ldflags "-s -w" [filename]

‘-s’ 相当于strip掉符号表, 但是以后就没办法在gdb里查看行号和文件了。
‘-w’ flag to the linker to omit the debug information 告知连接器放弃所有debug信息

这样下来文件可以达到1m左右,如果还是嫌大,可以使用gccgo

gccgo -o [filename] [filename.go]

gccgo编译出的就跟c/c++可执行文件差不多了,20-30k左右,不过我有点怀疑这种文件拿到别的机器上还能不能跑,没做实验。

Update:已做实验,不能跑,会提示缺少libgo

Update #2: gccgo ... -static-libgo后生成文件高达4m,鸽了鸽了

此处评论已关闭