リンクおよびバインド

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

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

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

プロシージャのリンクは、リンク時にシステム リンカーで実行されます。リンカーにより、システム実行可能ファイル内のリンク先プロシージャのコードが追加されることはありませんが、そのプロシージャのオブジェクト コードを含む共有ライブラリ ファイルへの参照が追加されます。