リンカーld(1)は通常、コンパイラ、アセンブラ、または以前のリンカーの呼び出しから生成されるさまざまな入力ファイルを受け取ります。リンカーは、これら入力ファイル内のデータを連結および解釈して、出力ファイルを生成します。生成される出力ファイルは次のいずれかの基本タイプになります。
動的実行可能ファイル - 実行可能プロセスを生成するときに、実行時リンカーld.so.1(1)による割り込みを必要とする入力再配置可能オブジェクトの連結。動的実行可能ファイルは、通常共有オブジェクトの形で 1 つ以上の依存関係を持っています。
動的実行可能ファイルは、–z type=exec オプションが使用された場合に作成され、出力ファイルタイプを制御するオプションがほかに指定されていない場合のデフォルトになります。
位置独立実行可能ファイル - 共有オブジェクトの特殊な場合。インタプリタを指定します。位置独立実行可能ファイルは位置独立コードから作成すべきです。位置独立時可能ファイルは、実行時に固定されたアドレス空間を必要とする動的実行可能ファイルと違い、exec(2)によって選択された任意のアドレスにロードできます。
位置独立実行可能ファイルが作成されるのは、–z type=pie オプションが使用された場合です。
再配置可能オブジェクト - 後続のリンク編集フェーズで使用可能な、入力再配置可能オブジェクトの連結。
再配置可能オブジェクトが作成されるのは、–z type=reloc オプションまたは –r オプションが使用された場合です。
共有オブジェクト – 実行時に動的実行可能ファイルに結合される可能性があるサービスを提供する入力再配置可能オブジェクトの連結。共有オブジェクトは位置独立コードから作成すべきです。また、共有オブジェクトの中にも、ほかの共有オブジェクトに依存する依存関係がある場合もあります。
共有オブジェクトが作成されるのは、–z type=shared オプションまたは –G オプションが使用された場合です。