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

印刷ビューの終了

更新: 2014 年 7 月
 
 

シンボルの可視性

シンボルは、局所大域に分類できます。局所シンボルは、シンボル定義が含まれるオブジェクト以外のオブジェクトから参照できません。デフォルトでは、局所シンボルは入力再配置可能オブジェクトファイルから構築中の出力オブジェクトにコピーされます。代わりに、局所シンボルを出力オブジェクトから削除できます。シンボル削除を参照してください。

大域シンボルは、シンボル定義が含まれるオブジェクト以外のオブジェクトからも参照できます。大域シンボルは、収集と解決のあとで、出力オブジェクト内に作成されるシンボルテーブルに追加されます。すべての大域シンボルがまとめて処理および解決されますが、それらの最終的な可視性は調整できます。大域シンボルには、追加の可視性属性を定義できます。Table 12–23 を参照してください。さらに、mapfile シンボル指令を使用して、リンク編集中にシンボルの可視性を割り当てることもできます。Table 8–8 を参照してください。これらの可視性属性 (および指令) により、出力オブジェクトへの書き込み時に可視性が調整された大域シンボルを生成できます。

再配置可能オブジェクトを作成すると、すべての可視性属性および指令が出力オブジェクトに記録されます。ただし、これらの属性によって暗黙的に定義された可視性の変更は適用されません。代わりに、これらのオブジェクトを入力として読み取る動的オブジェクトの次のリンク編集まで、可視性の処理が延期されます。特殊なケースでは、–B reduce オプションを使用して、可視性属性および指令をただちに強制的に解釈できます。

動的実行可能ファイル (または共有オブジェクト) を作成すると、シンボルがシンボルテーブルに書き込まれる前に、シンボル可視性の属性および指令が適用されます。可視性属性により、シンボルが大域のままであり、シンボル縮小の手法による影響を受けないことを保証できます。可視性の属性および指令によって、局所に降格される大域シンボルを生成することもできます。この後者の手法がもっともよく使用されるのは、オブジェクトのエクスポートされたインタフェースを明示的に定義する場合です。シンボル範囲の縮小を参照してください。