2016-07-07 7 views
0

スタティックライブラリファイル( '.a'ファイル)を共有しました。私が7zでそれを開いたとき、それは2つのファイルを含んでいました。一つは拡張子なし、もう一つは.o拡張子です。これらのファイルは何ですか? .oはここのオブジェクトファイルであり、これらのファイルのどれがリンク処理中に実際にリンクされていますか。 .Aファイルについて.aスタティックライブラリファイルの内容

詳細情報: は、ファイルxyz.a名前ましょう: 私の未圧縮それか7Zでそれを見ると、私は2つのファイルを見ることができます: を - XYZ -

+0

'ar(1)'( 'ar x file.a')で抽出すると同じファイルがありますか?このファイルの詳細を知るために 'file(1)'を使いましたか? – blatinox

答えて

0
abc.o

'.a'ファイルには、arユーティリティで追加された複数の '.o'ファイルを含めることができます。グローバルシンボルを含む '.o'ファイルにインデックスをマッピングするインデックスを含めることもできます。一部のシステム(主にSysVまたはGNUベース)では、arsオプションを使用してインデックスを更新します。他のシステム(主にBSDベース)では、インデックスは別のranlibユーティリティによって更新されます。

あなたの質問に答えるために、 '.o'ファイルはライブラリを構成するオブジェクト(コード)ファイルであり、もう1つのファイルはインデックスであり、 '.o'ファイルのいくつかのサブセットはリンカを使用して、索引の助けを借りて、どの '.o'ファイルが必要かを判断します。

リンカでは、-l fooオプションは、libfoo.soという動的ライブラリまたはlibfoo.aという静的ライブラリを検索します。その他のldオプションは、静的または動的ライブラリを検索するかどうか、および検索する場所を制御します。