在Ubuntu上打包Golang程序并压缩体积,可按以下步骤操作:
编译时去除调试信息
使用-ldflags="-s -w"
参数移除符号表和DWARF调试信息,减少文件体积:
go build -ldflags="-s -w" -o myapp main.go
(-s
去除符号表,-w
去除调试信息,二者可单独或组合使用)
使用UPX压缩二进制文件
安装UPX工具:
sudo apt-get install upx-ucl
压缩文件(推荐使用--best
或-9
参数):
upx --best -o myapp_compressed myapp
(--best
启用最高压缩率,压缩后体积可减少50%-70%,但可能增加启动时间)
可选:进一步优化依赖
go.mod
中不必要的依赖,避免引入大型库。-trimpath
参数移除编译路径信息(需Go 1.13+):go build -trimpath -ldflags="-s -w" -o myapp main.go
注意:UPX压缩可能触发部分安全软件误报,建议仅在非敏感环境中使用。若需极致压缩,可结合garble
工具进行代码混淆(需自行权衡可维护性)。