ホームページ > バックエンド開発 > Golang > 「strip」ツールを使用せずに、Go バイナリの TEXT ディレクティブからファイル パスを削除するにはどうすればよいですか?

「strip」ツールを使用せずに、Go バイナリの TEXT ディレクティブからファイル パスを削除するにはどうすればよいですか?

DDD
リリース: 2024-11-30 03:06:10
オリジナル
109 人が閲覧しました

How Can I Remove File Paths from Go Binaries' TEXT Directives Without Using the `strip` Tool?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート