リンカーとライブラリ

外部結合

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

実行時リンカーは、実行時にデフォルト検索モデルを使ってこの定義を見つけます。一般にリンカーはオブジェクトを 1 つずつ検索しますが、その際、動的実行可能プログラムから始め、オブジェクトが読み込まれた順に各依存関係を処理します 。

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