centos8:golang build 独立打包 + 缩小编译后体积

冷暖自知 提交于 2020-02-25 21:21:17

golang编译后的文件通常较大,依赖文件也众多,为了简化分发,决定:1、将编译成独立一体的可执行文件,2、减少体积。

测试用例,reader.go(内容不重要,甚至包括了cgo)

go build reader.go
ldd reader

发现有不少依赖包,在整体打包前,还需要确认是否安装了glibc-static,否则会出错

# dnf --enablerepo=PowerTools install glibc-static
# go build -ldflags  '-linkmode "external" -extldflags "-static" -w -s' reader.go
# upx -9 reader
  1. 设置编译参数-ldflags '-linkmode "external" -extldflags "-static"‘,实现整体打包;
  2. 设置编译参数-ldflags "-w -s"。其中-w为去掉调试信息(无法使用gdb调试),-s为去掉符号表,可有效减少编译后体积(一般能缩小30+%);
  3. upx -9,直接将3MB多的文件压倒800KB。(upx需要独立安装, https://github.com/upx/upx/releases
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!