23

これは、gcc がソース コードのバージョン情報を ELF バイナリにセクションなどとして挿入できるかどうかを意味します。ソースファイルを変更したくありませんが、Makefile に gcc オプションで情報を追加します。

4

4 に答える 4

7

バージョン情報をテキスト ファイルに出力し、そのテキスト ファイルをオブジェクト ファイルに変換して、実行可能ファイルに静的にリンクすることができます。

最初のステップは簡単ですが、いくつかのコードを書く必要があります: プレーン テキスト ファイルとして任意の形式でバージョン情報を書き込むためのスクリプトまたは何かです。次に、 objcopyを使用して、version.txt からたとえば version.o を生成するメイクファイル ルールを記述します。これで、2 つの便利なシンボルが定義されたオブジェクト ファイルが作成されます。テキスト バージョン情報の開始と終了です。生成されたオブジェクトを実行可能ファイルに追加すると、2 つの方法でバージョンにアクセスできるようになります。stringsバイナリで実行する方法と、アプリケーションでコードを記述してバージョン文字列を出力する方法です (開始と終了を宣言する必要があります)。シンボルをヘッダー ファイルの変数として)。

于 2013-05-03T00:07:40.760 に答える
2

GNU リンカ ld を使用すると、次のことができます。

--version-script=version-scriptfile

コマンド ライン オプションの詳細については 、GNU リンカである LD の使用 - オプションを参照してください。

バージョン スクリプトの作成について詳しく は、GNU リンカである LD の使用 - バージョン スクリプトを参照してください。

ただし、気の弱い人向けではないことを警告しておきます。

于 2015-06-13T06:49:04.643 に答える