应用程序的二进制大小一直是Go
圈的热门话题。 在这篇文章中,我们将向您展示如何减少 go build
生成的二进制文件的大小,以实现更精简的构建。
简而言之,添加如下所示的 ldflags
将减少生成的二进制文件的大小。 它通过删除一些可能非关键的部分来实现这一点(不应影响执行,仅可能影响调试)。
go build -ldflags="-s -w"
-s
将关闭符号表,因此您将无法使用像 go tool nm
这样的命令。
-w
关闭DWARF
调试信息,因此您将无法设置断点或获取堆栈跟踪中的特定信息。 同样,某些配置文件用例将不起作用,例如 pprof
。
我们可以使用file
命令判断它是否被删除了调试信息。
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked,
Go BuildID={id}, with debug_info, not stripped
以上是不使用ldflags
正常构建的情况,请注意 debug_info
。