邢台哪儿能做网站,湖南seo服务电话,中国核工业第五建设有限公司官网,黄页网站代码上一篇#xff0c;我们已经用GoLand开发了第一个程序Hello Kitty,接下去#xff0c;我们将完成Go程序的打包发布。
执行#xff1a;
go build -x main.gogo build 和 go run 在编译过程中其实是差不多的#xff0c;不同之处是 go build 会生成编译好二进制文件并删掉编译…上一篇我们已经用GoLand开发了第一个程序Hello Kitty,接下去我们将完成Go程序的打包发布。
执行
go build -x main.gogo build 和 go run 在编译过程中其实是差不多的不同之处是 go build 会生成编译好二进制文件并删掉编译过程产生的临时目录。若没有-o 指定文件名则和当前目录名一致。 常用参数:
参数名格式含义-o-o file指定编译后二进制文件名-a-a强制重新编译涉及的依赖-s-s省略符号表并调试信息-w-w省略 DWARF 符号表-p-p指定编译过程中的并发数默认为CPU数-work-work设置该参数后不会在程序结束后删掉编译的临时文件可用于参看编译生成的文件-n-n加上该参数可以查看编译的过程但不会继续执行编译后的二进制文件-x-x加上该参数可以查看编译的过程会继续执行编译后的二进制文件
编译后文件体积过大解决方案 默认生成1.87M 的包main.exe。 优化方案 第一步编译优化,说明会去除 DWARF调试信息、符号信息 go build -ldflags -s -w main.go变小了好多 只有1.27mb但是要注意
-s 去掉符号表这样 panic 时stack trace 就没有任何文件名/行号信息了这等价于普通C/C程序被strip的效果-w 去掉 DWARF 调试信息得到的程序就不能用 gdb 调试了 两个可以分开使用实际项目中不建议做这些处理多费点空间也没关系。
第二步压缩优化 安装 UPX并使用 最高级别的压缩 下载地址https://github.com/upx/upx/releases复制upx.exe到应用的当前目录下 执行命令 .\upx.exe -9 main.exe.\upx.exe -9 main.exeUltimate Packer for eXecutablesCopyright (C) 1996 - 2023
UPX 4.2.1 Markus Oberhumer, Laszlo Molnar John Reiser Nov 1st 2023File size Ratio Format Name-------------------- ------ ----------- -----------1339392 - 531456 39.68% win64/pe main.exe Packed 1 file.
包体缩小到了519 KB
笔者从 1.87M → 1.27MB → 519 KB
总结
本文主要讲述了如何打包如何对包体大小进行优化,下一篇我们将讲述下GO模块引入指令Go Mod
参考
Go - run、build、install 编译详解 猫轻王的博客Golang 专栏