リンカーとライブラリ

外部結合

作成するオブジェクトのシンボルリファレンスが共有オブジェクト内の定義によって解決されると、そのシンボルは未定義のまま残り、シンボルに対応する再配置情報が実行時の検索で使用されます。定義を提供する共有オブジェクトは、通常、1 つの依存条件になります。

実行時リンカーは、実行時にデフォルト検索モデルを使ってこの定義を見つけます。一般にリンカーはオブジェクトを 1 つずつ検索しますが、その際、動的実行可能ファイルから始め、オブジェクトがロードされた順に各依存関係を処理します (「シンボルの検索」を参照)。

オブジェクトは、リンカーの -B direct オプションを使って作成することもできます。このオプションでは、参照されるシンボルとその定義を提供するオブジェクトとの関係は、作成するオブジェクト内に維持されます。この情報を使えば、実行時リンカーは、リファレンスと、シンボルを定義するオブジェクトを直接結合し、デフォルトのシンボル検索モデルをバイパスすることができます。直接結合情報は、リンク編集で指定される依存関係に対してのみ確立されます (したがって、-z defs オプションを推奨します)。直接結合では、実行時のシンボル検索処理が大幅に減ることがあります。この実行時結合のモデルに関する詳細は、「直接結合」を参照してください。