3 回答

TA贡献1856条经验 获得超17个赞
如果使用 -ldflags '-w -s' 编译,您将获得最小的二进制文件。-w 关闭 DWARF 调试信息:您将无法在二进制文件上使用 gdb 来查看特定函数或设置断点或获取堆栈跟踪,因为将不包括 gdb 需要的所有元数据。您也将无法使用依赖于信息的其他工具,例如 pprof 分析。-s 关闭 Go 符号表的生成:您将无法使用“go tool nm”来列出二进制文件中的符号。Strip -s 就像将 -s 传递给 -ldflags 一样,但它并没有剥离那么多。在 'strip -s' 之后,'Go tool nm' 可能仍然有效。我不完全确定。
这些 - 不是 -ldflags -w,不是 -ldflags -s,不是 strip -s - 都不会影响实际程序的执行。它们仅影响您是否可以使用其他工具调试或分析程序。

TA贡献2039条经验 获得超7个赞
该go help build
说
-ldflags 'flag list' arguments to pass on each 5l, 6l, or 8l linker invocation.
所以,我们可以调用go tool 6l
来查看它的所有选项。其中之一是
-w disable DWARF generation
顺便说一下,5l
代表ARM ( $GOARCH = arm
),6l
代表x86-64 ( $GOARCH = amd64
),8l
代表x86 ( $GOARCH = 386
)。
如果你真的想查看原始DWARF信息,你应该dwarfdump -a
在 OS X 和objdump -wg
Linux 上使用。警告!输出会很长,很长。

TA贡献1735条经验 获得超5个赞
你可以从 go tool link
$ go tool link ... -s disable symbol table -w disable DWARF generation
- 3 回答
- 0 关注
- 453 浏览
添加回答
举报