centos8:golang build 独立打包 + 缩小编译后体积
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 设置编译参数-ldflags '-linkmode "external" -extldflags "-static"‘,实现整体打包; 设置编译参数-ldflags "-w -s"。其中-w为去掉调试信息(无法使用gdb调试),-s为去掉符号表,可有效减少编译后体积(一般能缩小30+%); upx -9,直接将3MB多的文件压倒800KB。(upx需要独立安装, https://github.com/upx/upx/releases ) 来源: oschina 链接: https://my.oschina.net/faramita/blog/3163856