リンカーとライブラリ

アーカイブ処理

アーカイブは、ar(1) を使用して構築され、通常、アーカイブシンボルテーブルとともに再配置可能オブジェクトの集合で構成されます。このシンボルテーブルにより、これらの定義の提供するオブジェクトとシンボル定義との関係がわかります。デフォルトでは、リンカーを使用すると、アーカイブ構成要素を選択して抽出できます。リンカーがアーカイブを読み取る場合は、結合処理を完了させるために必要なアーカイブから、オブジェクトだけを選択するように作成された内部シンボルテーブル内の情報を使用します。さらに、1 つのアーカイブのすべての構成要素を明示的に抽出することも可能です。

次のような場合に、リンカーはアーカイブから再配置可能オブジェクトを抽出します。

選択式アーカイブ抽出においては、ウィークシンボルリファレンスでは、-z weakextract オプションが発効されていない限り、アーカイブからの抽出は実行されません。ウィークシンボルについては、「単純な解析」の項で詳しく説明しています。


注 -

オプション -z weakextract-z allextract、および -z defaultextract により、複数のアーカイブ間でアーカイブメカニズムを切り替えることができます。


選択式アーカイブ抽出の場合、リンカーは、リンカーの内部シンボルテーブル内に蓄積されたシンボル情報を満たすために必要な、再配置可能オブジェクトを抽出するアーカイブを通る複数のパスを作成します。リンカーが、再配置可能オブジェクトを抽出せずに、アーカイブを通る完全なパスを作成すると、リンカーは次の入力ファイルの処理に移ります。

アーカイブに遭遇した時点で、必要な再配置可能オブジェクトだけをアーカイブから抽出することによりメカニズムは、入力ファイルリスト内のアーカイブの位置が重要であることを意味しています (詳細については、「コマンド行上のアーカイブの位置」を参照してください)。


注 -

リンカーは、アーカイブを通る複数のパスを作成し、シンボルを解析しますが、このメカニズムは、ランダムに構成された再配置可能オブジェクトが組み込まれた大容量のアーカイブの場合には、非常にコストがかかります。このような場合は、lorder(1)tsort(1) などのツールを使用してアーカイブ内の再配置可能オブジェクトを配列し、リンカーが実行しなければならないパスの数を削減することができます。