有时候发布到线上的可执行文件有点大,需要对其进行压缩。
以windows系统为例,现在有一个 demo.exe 大小 1.14M
步骤1
添加构建标志
go build -ldflags="-s -w" demo.go
-s: 省略符号表和调试信息。 大多数情况下,在生产环境中不需要它们。
-w: 省略DWARF消息。
这两个参数不会影响程序的执行,但它会减少可执行文件的大小。
压缩后的大小 825K,减小27%。
步骤2
使用 upx 程序。
下载安装 upx:https://upx.en.softonic.com/download
解压到 D:/upx-3.96-win32
> D:/upx-3.96-win32/upx.exe demo.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2020
UPX 3.96w Markus Oberhumer, Laszlo Molnar & John Reiser Jan 23rd 2020
File size Ratio Format Name
-------------------- ------ ----------- -----------
845312 -> 317440 37.55% win64/pe demo.exe
Packed 1 file.
压缩后的大小 310K,又减小60%。
经过这两步,已经压缩到原来的 30%了。
另外,upx 也有 linux 版本的 https://github.com/upx/upx/tags
> cd /mnt/d/dev/php/magook/trunk/server/golang/project/go-ole > go build -ldflags="-s -w" demo.go > dpkg --print-architecture amd64 > wget https://github.com/upx/upx/releases/download/v3.96/upx-3.96-amd64_linux.tar.xz > tar -xf upx-3.96-amd64_linux.tar.xz > upx-3.96-amd64_linux/upx demo