• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

Go语言:解决编译后文件体积过大解决方案

优化方案 第一步:编译优化

使用一下指令进行编译:

go build -ldflags="-w -s" main.go

说明:会去除 DWARF调试信息、符号信息

-a 强制编译所有依赖包。

-s 去掉符号信息

-w 去掉DWARF调试信息,得到的程序就不能用gdb调试了

优化方案 第二步:加壳压缩

安装 UPX,并使用 最高级别的压缩

下载地址:https://github.com/upx/upx/releases

执行命令:

upx.exe -9 *.exe

优化方案 第三步:编程时注意

编程时候,能指针就指针

压缩对比示例

$ ls -lh
-rwxr-xr-x 1 laojiacom 197121 60M Jan 24 13:30 cmdb-api       
-rwxr-xr-x 1 laojiacom 197121 48M Jan 24 13:33 cmdb-api-1   
-rwxr-xr-x 1 laojiacom 197121 17M Jan 24 13:16 cmdb-api.upx

使用 -ldflags "-s -w" 注意事项

不生效

go build -ldflags "-s -w" -ldflags "-X '${VERSION_PATH}.GIT_BRANCH=${BUILD_BRANCH}'" main.go

正确位置: -ldflags "-s -w" 要紧挨着编译的文件

go build  -ldflags "-X '${VERSION_PATH}.GIT_BRANCH=${BUILD_BRANCH}'" -ldflags "-s -w" main.go


0
0
下一篇:MySQL 5.7 参数之 binlog_row_image

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。