Oracle® Solaris 11.2 リンカーとライブラリガイド

印刷ビューの終了

更新: 2014 年 7 月
 
 

直接結合の有効化

直接結合を使用するオブジェクトは、シンボル参照と、定義を提供する依存関係との間の関係を保持します。実行時リンカーは、デフォルトのシンボル検索モデルを使用する代わりに、この情報を使って関連するオブジェクトから直接シンボルを検索します。

動的オブジェクトの直接結合情報はリンク編集時に記録されます。この情報は、該当オブジェクトのリンク編集時に指定された依存関係に対してのみ確立できます。–z defs オプションを使用すると、必要なすべての依存関係がリンク編集の一部として確実に提供されます。

直接結合を使用するオブジェクトは、直接結合を使用しないオブジェクトがあるプロセス内に存在できます。直接結合を使用しないオブジェクトは、デフォルトのシンボル検索モデルを使用します。

シンボル参照からシンボル定義への直接結合を確立するには、次のいずれかのリンク編集メカニズムを使用します。

  • –B direct オプションを使用する。このオプションは、構築されるオブジェクトとそのすべての依存関係との間に直接結合を確立します。またこのオプションは、構築中のオブジェクト内の任意のシンボル参照とシンボル定義との間に直接結合を確立します。

    –B direct オプションを使用すると、遅延読み込みも有効になります。これは、リンカーのコマンド行の先頭に –z lazyload オプションを追加するのと同じです。この属性は動的依存関係の遅延読み込みで紹介されました。

  • –z direct オプションを使用する。このオプションは、構築されるオブジェクトから、コマンド行上でこのオプションに続いて指定される依存関係への直接結合を確立します。このオプションは、–z nodirect オプションと併用して、依存関係の間で直接結合を使用するかどうかを切り替えることができます。このオプションは、構築中のオブジェクト内のシンボル参照とシンボル定義との間に直接結合を確立しません。

  • DIRECT mapfile キーワードを使用する。このキーワードは、直接結合する個別のシンボルに対応します。このキーワードは、SYMBOL_SCOPE/SYMBOL_VERSION 指令で説明されています。


注 -  環境変数 LD_NODIRECT をヌル以外の値に設定すれば、実行時に直接結合を無効にできます。この環境変数を設定することで、プロセス内のすべてのシンボル結合は、デフォルトの検索モデルを使用して実行されます。

次のセクションでは、直接結合の各メカニズムの使用方法について説明します。