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條經驗 獲得超8個贊
該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 關注
- 493 瀏覽
添加回答
舉報