从 Go 编译代码中剥离调试信息
默认情况下,使用 gc 编译的 Go 代码中经常包含调试信息。虽然它有助于调试目的,但它也会增加可执行文件的大小并使其容易被反编译。
删除调试信息
在执行期间消除调试信息使用 gc 编译时,指定“-ldflags”标志以及“-s”和“-w”选项。以下命令演示了这一点:
go build -ldflags="-s -w"
“-s”选项删除符号表,而“-w”选项则抑制 DWARF 调试信息。这有效地从已编译的可执行文件中删除所有调试信息。
有关 gccgo 的注意事项
使用 gccgo 无法解决此问题。不使用“-g”标志进行编译将导致可执行文件损坏,并输出与缺少调试信息相关的错误。
Go 1.13 中的附加选项
引入了Go 1.13 中,“-trimpath”标志可用于减少可执行文件中存储的文件路径的长度。这进一步最小化了编译代码的大小。
以上是如何从编译的 Go 代码中去除调试信息?的详细内容。更多信息请关注PHP中文网其他相关文章!