首頁 > 後端開發 > Golang > 如何從 Go 二進位 TEXT 指令中刪除檔案路徑?

如何從 Go 二進位 TEXT 指令中刪除檔案路徑?

Susan Sarandon
發布: 2024-12-11 18:13:11
原創
713 人瀏覽過

How Can I Remove File Paths from Go Binary TEXT Directives?

從Go 二進製文件中的文本指令中刪除文件路徑

問題:

建構Go時可執行文件,路徑訊息,例如「/Users/myuser/dev/go/src/fooapi/spikes/mongoapi.go」通常包含在程式集中的 TEXT 指令中。在某些情況下,此路徑資訊可能是不需要的。

解決方案:

要刪除檔案路徑信息,請在執行期間將 -trimpath 標誌與 -gcflags 和 -asmflags結合使用建置過程:

CGO_ENABLED=0 go build -v -a -ldflags="-w -s" \
    -gcflags=-trimpath=/Users/myuser/dev/go/src \
    -asmflags=-trimpath=/Users/myuser/dev/go/src \
    -o ./fooapi spikes/mongoapi.go
登入後複製

如何有效:

將 -trimpath 傳遞給 -gcflags 和 -asmflags 會從 elf 二進位檔案中刪除任何路徑資訊。這可確保程式集中的 TEXT 指令僅包含相關的函數名稱和偏移量,而不包含關聯的檔案路徑。

驗證:

您可以使用以下方式驗證結果go tool objdump 指令:

$ go tool objdump ./fooapi
.
.
TEXT main.init(SB) api/spikes/mongoapi.go
mongoapi.go:60  0x12768c0   65488b0c25a0080000  GS MOVQ GS:0x8a0, CX
mongoapi.go:60  0x12768c9   483b6110        CMPQ 0x10(CX), SP
mongoapi.go:60  0x12768cd   7663            JBE 0x1276932
.
.
登入後複製

如你所見,檔案路徑「/ Users/myuser/dev/go/src/api/spikes/mongoapi.go」已從TEXT 指令中刪除。

其他資訊:

使用不建議使用 strip 工具刪除檔案路徑信息,因為它可能會導致可執行檔損壞。 -trimpath 標誌提供了一種更受控和更可靠的方式來實現所需的結果。

以上是如何從 Go 二進位 TEXT 指令中刪除檔案路徑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板