减小 golang 编译出程序的体积

博客介绍Go程序编译相关内容。go build编译时可通过 -ldflags 指定编译参数,能去掉符号和调试信息,还测试了加与不加该参数编译出的应用大小。对于较大的程序,可采用UPX进一步压缩,介绍了其安装和压缩命令,压缩效果显著,但需在对应平台测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-ldflags

go build 编译程序时可以通过 -ldflags 来指定编译参数。

-s 的作用是去掉符号信息。 -w 的作用是去掉调试信息。

测试加与不加 -ldflags 编译出的应用大小。

go build -o tmp/frpc ./cmd/frpc
-rwxr-xr-x  1 fate  staff  12056092 Dec 10 15:49 frpc

go build -ldflags "-s -w" -o tmp/frpc2 ./cmd/frpc
-rwxr-xr-x  1 fate  staff   8353308 Dec 10 15:49 frpc2

UPX 压缩

在某些设备上动辄接近 10MB 的程序大小还是比较大的,这个时候可以采用 UPX 来进一步压缩。好处是占用磁盘空间小了,坏处是程序启动时会先进行一æ­¥解压缩,将代码还原到内存中,也就是说占用的内存大小并不会减少,当然,对于现代设备来说,启动的耗时几乎可以忽略。

通过各系统的包管理工具一般可以自动安装 UPX。 例如 Centos 上 epel 库 yum install -y upx。 macos 上通过 brew 安装brew install upx

压缩命令 upx -9 -o ./frpc2_upx ./frpc2

-o 指定压缩后的文件名。-9指定压缩级别,1-9。

压缩后的文件体积

-rwxr-xr-x  1 fate  staff   2998928 Dec 10 15:49 frpc2_upx

可以看到缩小了接近 5MB,效果显著。

需要注意的是,UPX 可能并不能正确的压缩所有平台的程序,压缩完成后最好自行在对应平台运行测试一下。

转载于:https://my.oschina.net/solate/blog/3050911

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值