リンク編集プロセスにより、1 つまたは複数の入力ファイルから出力ファイルが作成されます。出力ファイルの作成は、入力ファイルによって提供される入力セクションとともにリンカーに提供されたオプションによって指示されます。とともにリンカーに提供されたオプションによって指示されます。
ファイルはすべて、「実行可能なリンク書式 」 (ELF) で表示されます。ELF 書式の詳細については、第 7 章「オブジェクトファイル」を参照してください。ただし、ここでの概要説明では、まず、2 つの ELF 構造、「セクション」と「セグメント」について紹介する必要があります。
セクションとは、ELF ファイル内で処理できる、最も小さな、分割できない単位のことです。セグメントとは、セクションの集合で、exec(2) または実行時リンカー ld.so.1(1) によってメモリーイメージに対応付けできる最小の一単位を表します。
ELF セクションには多くのタイプがありますが、これらはすべて、リンク編集を基準にして次の 2 つのカテゴリに分類されます。
基本的には、リンカーにより、「プログラムデータセクション」が連結されて出力ファイルになります。「リンク編集情報セクション」は、リンカーによって解釈されて、別のセクションに修正されるか、またはこのあと処理される出力ファイルで使用される新しい出力情報セクションが生成されます。
リンカーの、次のような単純な機能の内訳については、この章で説明します。
リンカーを通過するすべてのオプションの整合性を検証し、検査する
入力再配置可能オブジェクトから、同じ特性 (たとえば、型、属性、名前など) のセクションを結合し、出力ファイル内に新しい出力ファイルを形成する。これらの結合されたセクションは、次に、出力セグメントへと連結できる
リンカーは、再配置可能オブジェクトと共有オブジェクトの両方からシンボルテーブル情報を読み取り、リファレンスを定義と検証し、統一させる。さらに、通常、出力ファイル内に新しいシンボルテーブルまたはテーブルを作成する
リンカーは、入力再配置可能オブジェクトから再配置情報を読み取り、他の入力セクションを更新してこの情報を出力ファイルに適用する。さらに、実行時リンカーが使用するために出力再配置セクションも生成される
リンカーは、作成したすべてのセグメントを記述した「プログラムヘッダー」を生成する
リンカーは、必要に応じて、共有オブジェクトの依存関係などの情報を実行時リンカーに提供する、動的リンク情報セクションを生成する
「セクション」と関連する「セクション」を連結して「セグメント」にするといった連結プロセスは、リンカー内のデフォルト情報を使用して実行されます。通常、ほとんどのリンク編集の場合、リンカーによって提供されるデフォルトの「セクション」と「セグメント」の処理で十分ですが、これらのデフォルトは、関連する mapfile を指定した -M オプションを使用して操作できます (詳細は、第 8 章「mapfile のオプション」を参照してください)。