コンパイルされた Go バイナリ内の TEXT ディレクティブからファイル パスを削除する
コンパイルされた Go バイナリ内の TEXT ディレクティブからファイル パス情報を削除する必要が生じます。この質問では、「ストリップ」ツールの使用を含まない解決策を求めています。
解決策: -trimpath フラグを使用する
推奨されるアプローチには、' -trimpath' は、「go build」を呼び出すときにフラグを立てます。 「-trimpath」を「-gcflags」および「-asmflags」に渡すことで、結果の elf バイナリから無関係なパス情報を取り除くことができます。
これは、「-」を組み込んだ「go build」コマンドの変更例です。トリムパス」 flags:
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
検証:
このソリューションの有効性を確認するには、変更されたバイナリで 'go tools 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 . .
追加注:
「ストリップ」ツールがこの問題を解決すると報告されていますが、Go コミュニティ内の一部の人は依然としてその信頼性について懸念を表明していることに注意することが重要です。さまざまなフォーラムやディスカッションで文書化されているように、未知の予測不可能なバグが発生しています。
以上が「strip」ツールを使用せずに、Go バイナリの TEXT ディレクティブからファイル パスを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。