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 サイトの他の関連記事を参照してください。