ホームページ >バックエンド開発 >Golang >Go Binary TEXT ディレクティブからファイル パスを削除するにはどうすればよいですか?

Go Binary TEXT ディレクティブからファイル パスを削除するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 18:13:11713ブラウズ

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

Go バイナリの TEXT ディレクティブからファイル パスを削除する

問題:

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 ツールの 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 ディレクティブから削除されました。

追加情報:

使用ファイル パス情報を削除するストリップ ツールは、実行可能ファイルが破損する可能性があるため、お勧めできません。 -trimpath フラグは、望ましい結果を達成するための、より制御された信頼性の高い方法を提供します。

以上がGo Binary TEXT ディレクティブからファイル パスを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。