此篇介绍一下如何减小Go程序编译后生成的可执行程序的体积。
Golang默认编译出来的可执行文件,一般都比较大。此处介绍一些可以减小可执行文件体积的方法。
Golang编译参数调整
go build -ldflags="-s -w" main.go
-s:忽略符号表和调试信息
-w:忽略DWARFv3调试信息,不生成debug信息,使用该选项后将导致无法使用gdb进行调试
注:Go编译器生成的调试信息格式为DWARFv3,只要版本高于7.1的GDB都可以支持调试
go build -gcflags '-N -l'
-N 禁止编译优化
-l 禁止内联,禁止内联也可以在一定程度上减小可执行程序大小
可以使用 go tool compile --help 查看 gcflags 各参数含义
UPX压缩
https://github.com/upx/upx
upx是一个二进制压缩工具,可以用来压缩编译出来的二进制文件尺寸。
upx --brute bin
upx --ultra-brute bin
可以使用不同的压缩参数,来进行不同程度的压缩。