リンカーとライブラリ

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

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


$ SGS_SUPPORT=./support.so.1:libldstab.so.1 cc ...

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


$ ld -S ./support.so.1 -S libldstab.so.1 ...

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


注 -

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



注 -

Solaris 7 では、ld は、64 ビットカーネルが、作動している場合は、64 ビットプログラムです。また、32 ビットカーネルが作動している場合は、32 ビットプログラムです。次のインタフェースの説明では、64 ビット ELF オブジェクトのサポートインタフェースが、32 ビットサポートインタフェースに似ているにもかかわらず、すべてのエントリポイントが「64」接尾辞で終ることを示しています。たとえば、ld_start()ld_start64() です。これにより、サポートインタフェースの両方の実装状態を単一の共有オブジェクト libldstab.so.1 の 32 ビットと 64 ビットの各クラスにに常駐させることができます。