在这篇文章中,我们将向您展示如何减少生成的二进制文件的大小,go build以实现更精简的构建。
go build
简而言之,添加如下所示的ldflags将减少生成的二进制文件的大小。它通过删除一些可能非关键的部分来实现这一点(不应影响执行,仅可能影响调试)。
-s将关闭符号表,因此您将无法使用诸如go tool nm.
-s
go tool nm
-w关闭“DWARF”调试信息,因此您将无法设置断点或获取堆栈跟踪中的特定信息。同样,某些配置文件用例将不起作用,例如 pprof。
-w
go build -ldflags="-s -w"
例如,我们将从有关sha3 编码的帖子中获取代码。如果我们使用 Go v1.19 运行构建,那么我们会得到1.8M的二进制大小,但使用上面的 ldflags 将产生1.2M的二进制大小(因此减少了33%)。虽然这种减少是开创性的,但它对更大的应用程序有更大的影响。
我们可以使用与上面相同的示例,但是使用file它的命令。这将告诉我们它是否被删除了调试信息。
file
$ go build sha3.go && file sha3
sha3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID={id}, with debug_info, not stripped
以上是正常构建,请注意debug_info。以下是剥离版本。
$ go build -ldflags="-s -w" sha3.go && file sha3
sha3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID={id}, stripped
原文链接:codingdict.net