編譯沒有偵錯資訊的 Go 程式碼
Go 中,編譯時預設包含偵錯訊息,可以更方便地偵錯程式碼。但是,也可以提取此資訊來反編譯程式碼。為了防止這種情況,我們需要在編譯時排除調試資訊。
使用 -ldflags
-ldflags 標誌可用來將選項傳遞給連結器。若要刪除符號表和偵錯訊息,請將 -s -w 新增至 -ldflags 選項。以下是範例:
Go 1.13 的附加提示
在Go 1.13 及更高版本中, -trimpath 標誌可用於減少檔案路徑的長度儲存在可執行檔中。這可以進一步最小化生成的二進位檔案的大小。
關於 gccgo 的注意事項
需要注意的是,使用基於 GCC 的 Go 編譯器 gccgo 並不能解決問題。如果使用 gccgo 在不使用 -g 標誌的情況下進行編譯,則會遇到與缺少偵錯資訊相關的錯誤。
建議
要完全刪除調試信息,這是建議使用 -ldflags="-s -w" 選項。這有效地去除了符號和偵錯訊息,使得反編譯已編譯的二進位檔案變得更加困難。
以上是如何在沒有偵錯資訊的情況下編譯Go程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!