リンクとバインド

共有ライブラリは、1 つまたは複数のシステム実行可能ファイルにリンクできます。システム実行可能ファイルを実行すると、システム・ローダは共有ライブラリのコピーを 1 つロードし、コード・エリアを共有して実行可能ファイルごとに個別データ・エリアを作成します。共有ライブラリは、システム実行可能ファイルのプロセスが終わるまでロードされたままになります。共有ライブラリ・ファイルには、プレフィックス lib と拡張子 .so (HP-UX PA-RISC の場合は .sl) が付けられます。

呼び出し可能共有オブジェクトは共有ライブラリとは異なりますが、拡張子は同じ .so になります。呼び出し可能共有オブジェクトは呼び出し可能ファイル・フォーマットであるため、オブジェクトはランタイムに必要に応じて動的にロードおよびアンロードされます。共有ライブラリは、呼び出し可能共有オブジェクトにリンクできます。

プログラムやサブプログラムのバインドは、ランタイムにシステム・ローダで実行されます。実行可能ファイルに、共有ライブラリ・ファイルの外部手続きのリファレンス (サブプログラムやメイン・プログラムの場合もある) が含まれる場合、システム・ローダは、その手続きが実行に利用できるかどうかを確認します。システム・ローダは、どれほど多くの同時ユーザやアプリケーションがその手続きにバインドされていても、そのユーザやアプリケーションが動的にバインドされた手続きのメモリ内の単一コピーを共有することを確認します。

手続きのリンクは、リンク時にシステム・リンカで実行されます。リンカにはシステム実行可能ファイルのリンクされる手続きのコードは含まれていませんが、手続きのオブジェクト・コードを含む共有ライブラリ・ファイルのリファレンスがあります。