ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
リンカーとライブラリ Oracle Solaris 11 Information Library (日本語) |
リンク編集では、一般に、コンパイラ、アセンブラ、または ld(1) によって生成されたさまざまな入力ファイルを受け取ります。リンカーは、これら入力ファイル内のデータを連結および解釈して、1 つの出力ファイルを生成します。リンカーにはさまざまなオプションを使用できますが、出力ファイル (入力再配置可能オブジェクトの連結) は次のいずれかの形式になります。
「静的実行可能ファイル」– すべてのシンボル参照を解決する入力再配置可能オブジェクトの連結。この実行可能ファイルは、実行準備が整ったプロセスを表します。「静的実行可能ファイル」を参照してください。
「動的実行可能ファイル」– 実行可能プロセスを生成するときに、実行時リンカーによる割り込みを必要とする入力再配置可能オブジェクトの連結。動的実行可能ファイルには、実行時に結合されるシンボル参照も必要です。動的実行可能ファイルは、通常共有オブジェクトの形で 1 つ以上の依存関係を持っています。
「共有オブジェクト」– 実行時に動的実行可能ファイルに結合される可能性があるサービスを提供する入力再配置可能オブジェクトの連結。また、共有オブジェクトの中にも、ほかの共有オブジェクトに依存する依存関係がある場合もあります。
これらの出力ファイルと、出力ファイルを作成する場合に使用するキーリンカーオプションを、図 1-1 に示します。
「動的実行可能ファイル」と「共有オブジェクト」を、しばしばまとめて「動的オブジェクト」と呼びます。このドキュメントでは、この動的オブジェクトに焦点を当てて説明します。
図 1-1 静的または動的リンク編集
静的実行可能ファイルは、多くのリリースで作成しないように勧められています。実際、64 ビットシステムアーカイブライブラリが提供されたことはありません。静的実行可能ファイルは、システムアーカイブライブラリに反して構築されるので、実行可能ファイルにはシステム実装の詳細が含まれます。この自己内包には、多数の欠点があります。
この実行可能ファイルは、共有オブジェクトとして提供されるシステムパッチの恩恵を受けることができません。したがって、多くのシステムの改良を利用するには、この実行可能ファイルを再構築する必要があります。
将来のリリースでこの実行可能ファイルを実行できなくなる可能性があります。
システム実装の詳細を複製すると、システムのパフォーマンスに悪影響を与えます。
Oracle Solaris 10 リリース以降、この OS に 32 ビット版のシステムアーカイブライブラリは含まれていません。これらのライブラリ (特に libc.a) が提供されないため、特別なシステムに関する知識を持っていないかぎり、静的実行可能ファイルは作成できなくなりました。なお、リンカーの静的リンクオプションを処理する機能とアーカイブライブラリを処理する機能に変更はありません。