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

印刷ビューの終了

更新: 2014 年 7 月
 
 

サポートインタフェースの呼び出し

リンカーは、SGS_SUPPORT 環境変数またはリンカーの –S オプションのどちらかによって提供される 1 つまたは複数のサポートライブラリを受け入れます。環境変数は、コロンで区切られたサポートライブラリのリストから構成されています。

$ SGS_SUPPORT=support.so.1:support.so.2  cc ....

–S オプションは、単一のサポートライブラリを指定します。複数の –S オプションを指定できます。

$ LD_OPTIONS="-Ssupport.so.1 -Ssupport.so.2"  cc ....

サポートライブラリは、共有オブジェクトの 1 つです。リンカーは、dlopen(3C) を使用して、各サポートライブラリを指定された順序で開きます。環境変数と –S オプションの両方がある場合は、環境変数によって指定されたサポートライブラリが最初に処理されます。次に、各サポートライブラリ内で、dlsym(3C) を使用してサポートインタフェースルーチンの検索が実行されます。これらのサポートルーチンは、リンク編集の各段階で呼び出されます。

サポートライブラリは、32 ビットまたは 64 ビットのいずれの場合でも、呼び出されるリンカーの ELF クラスと一致している必要があります。詳細は、32 ビットおよび 64 ビット環境を参照してください。


注 - デフォルトで、Solaris OS サポートライブラリ libldstab.so.1 は、入力再配置可能オブジェクト内で提供される、コンパイラによって生成されたデバッグ情報を処理し圧縮するために、リンカーで使用されます。–S オプションでサポートライブラリを指定してリンカーを呼び出した場合、このデフォルト処理は抑制されます。サポートライブラリサービス以外に、libldstab.so.1 のデフォルト処理が必要になる場合があります。この場合、リンカーに与えられるサポートライブラリのリストに、libldstab.so.1 を明示的に追加します。

32 ビットおよび 64 ビット環境

32 ビットおよび 64 ビット環境で説明しているように、64 ビットリンカー ld(1) は 32 ビットのオブジェクトを生成できます。また、32 ビットリンカーは 64 ビットのオブジェクトを生成できます。これらのオブジェクトはそれぞれ、定義されているサポートインタフェースに関連付けられています。

64 ビットオブジェクトのサポートインタフェースは 32 ビットオブジェクトのインタフェースと似ていますが、末尾に「64」という接尾辞が付きます。たとえば、ld_start() および ld_start64() のようになります。この規則により、サポートインタフェースの両方の実装状態を、単一の共有オブジェクトの 32 ビットと 64 ビットの各クラスに常駐させることができます。

SGS_SUPPORT 環境変数は、接尾辞 _32 または _64 を使用して指定でき、また、リンカーオプション –z ld32 および –z ld64 を使用して –S オプション要件を定義できます。これらの各定義は、対応する 32 ビットまたは 64 ビットのリンカーによってのみ解釈されます。このため、リンカーの種類が不明な場合に、両方の種類のサポートライブラリを指定できます。