リンカーld(1)は通常、コンパイラ、アセンブラ、または以前のリンカーの呼び出しから生成されるさまざまな入力ファイルを受け取ります。リンカーは、これら入力ファイル内のデータを連結および解釈して、出力ファイルを生成します。生成される出力ファイルは次のいずれかの基本タイプになります。
動的実行可能ファイル - 実行可能プロセスを生成するときに、実行時リンカーld.so.1(1)による割り込みを必要とする入力再配置可能オブジェクトの連結。動的実行可能ファイルは、通常共有オブジェクトの形で 1 つ以上の依存関係を持っています。
動的実行可能ファイルは、–z type=exec オプションが使用された場合に作成され、出力ファイルタイプを制御するオプションがほかに指定されていない場合のデフォルトになります。
位置独立実行可能ファイル - 共有オブジェクトの特殊な場合。インタプリタを指定します。位置独立実行可能ファイルは位置独立コードから作成すべきです。位置独立時可能ファイルは、実行時に固定されたアドレス空間を必要とする動的実行可能ファイルと違い、exec(2)によって選択された任意のアドレスにロードできます。
位置独立実行可能ファイルが作成されるのは、–z type=pie オプションが使用された場合です。
再配置可能オブジェクト - 後続のリンク編集フェーズで使用可能な、入力再配置可能オブジェクトの連結。
再配置可能オブジェクトが作成されるのは、–z type=reloc オプションまたは –r オプションが使用された場合です。
共有オブジェクト – 実行時に動的実行可能ファイルに結合される可能性があるサービスを提供する入力再配置可能オブジェクトの連結。共有オブジェクトは位置独立コードから作成すべきです。また、共有オブジェクトの中にも、ほかの共有オブジェクトに依存する依存関係がある場合もあります。
共有オブジェクトが作成されるのは、–z type=shared オプションまたは –G オプションが使用された場合です。
静的実行可能ファイルは、多くのリリースで作成しないように勧められています。実際、64 ビットシステムアーカイブライブラリが提供されたことはありません。静的実行可能ファイルは、システムアーカイブライブラリに反して構築されるので、実行可能ファイルにはシステム実装の詳細が含まれます。この自己内包には、多数の欠点があります。
この実行可能ファイルは、共有オブジェクトとして提供されるシステムパッチの恩恵を受けることができません。したがって、多くのシステムの改良を利用するには、この実行可能ファイルを再構築する必要があります。
将来のリリースでこの実行可能ファイルを実行できなくなる可能性があります。
システム実装の詳細を複製すると、システムのパフォーマンスに悪影響を与えます。
Oracle Solaris 10 リリース以降、この OS に 32 ビット版のシステムアーカイブライブラリは含まれていません。これらのライブラリ (特に libc.a) が提供されないため、特別なシステムに関する知識を持っていないかぎり、静的実行可能ファイルは作成できなくなりました。なお、リンカーの静的リンクオプションを処理する機能とアーカイブライブラリを処理する機能に変更はありません。