Oracle® Solaris 11.2 リンカーとライブラリガイド

印刷ビューの終了

更新: 2014 年 7 月
 
 
第 2 章

リンカー

リンク編集プロセスにより、1 つまたは複数の入力ファイルから出力ファイルが作成されます。出力ファイルの作成は、リンカーのオプションによって指示され、入力セクションは入力ファイルによって提供されます。

ファイルはすべて、実行可能リンク形式 (ELF) で表現されます。ELF 書式の詳細については、Chapter 12, オブジェクトファイル形式を参照してください。この概要として、「セクション」と「セグメント」という 2 つの ELF 構造を紹介します。

セクションとは、ELF ファイル内で処理できる、分割できない最小単位のことです。セグメントとは、セクションの集合で、exec(2) または実行時リンカー ld.so.1(1) でメモリーイメージに対応付けできる最小単位 (これ以上分割できない単位) です。

ELF セクションには多くのタイプがありますが、リンク編集フェーズに関して次の 2 つのカテゴリに分類されます。

  • プログラム命令 .text およびその関連データ .data.bss など、その解釈がアプリケーションに対してだけ意味のあるプログラムデータを含むセクション。

  • .symtab.strtabに含まれるシンボルテーブル情報や .rela.text などの再配置情報など、リンク編集情報を含むセクション。

基本的には、リンカーにより、「プログラムデータセクション」が連結されて出力ファイルになります。リンク編集情報」セクションは、その他のセクションを修正するためにリンカーによって解釈されます。情報セクションは、後で行われる出力ファイル処理で使用される新しい出力情報セクションの生成にも使用されます。

リンカーの、次のような単純な機能の内訳については、この章で説明します。

  • すべての提供オプションの検証と整合性チェック。

  • 入力再配置可能オブジェクトの同じ特性を持つセクションを連結することによる出力ファイル内での新しいセクションの形成。これらの連結されたセクションは、次に、出力セグメントへと連結できます。

  • 定義の参照を検証およびまとめるための再配置可能オブジェクトおよび共有オブジェクトのシンボルテーブル情報の処理。出力ファイル内での新しいシンボルテーブルまたはテーブルの生成。

  • 入力再配置可能オブジェクトの再配置情報の処理、および出力ファイルを構成するセクションへのこの情報の適用。さらに、実行時リンカーが使用するために出力再配置セクションも生成されます。

  • 作成されたすべてのセグメントを記述するプログラムヘッダーの生成。

  • 必要に応じた、共有オブジェクトの依存関係やシンボルの結合などの情報を実行時リンカーに提供する、動的リンク情報セクションの生成。

セクションと関連するセクションを連結してセグメントにするといった連結プロセスは、リンカー内のデフォルト情報を使用して実行されます。通常、ほとんどのリンク編集では、リンカーによって提供されるデフォルトのセクションセグメントの処理で十分です。ただし、これらのデフォルトは対応する –mapfile を指定した M オプションを使用して操作できます。Appendix B, System V Release 4 (バージョン 1) Mapfileを参照してください。