golang语言是使用静态编译,但是由golang编译出来的程序仔细一点的话会发现有点大,我们需要对它进行一次廋身
举个例子这个文件hello.go
正常编译后的大小
go build hello.go
添加点参数就不一样了
go build -ldflags "-s -w" hello.go
命令解析
-s去掉符号表(然后panic时候的stack trace就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果,
-w去掉DWARF调试信息,得到的程序就不能用gdb调试了。
-s和-w也可以分开使用,一般来说如果不打算用gdb调试,
-w基本没啥损失。-s的损失就有点大了。