リンカーとライブラリ

プラットフォーム固有の共有オブジェクト

動的トークン $OSNAME$OSREL、および $PLATFORM は実行時に展開されて、システム固有の情報を提供します。$OSNAME は、ユーティリティ uname(1) にオプション -s を付けて実行した場合に表示されるように、オペレーティングシステムの名前を反映するよう展開されます。 $OSREL は、uname -r を実行した場合に表示されるように、オペレーティングシステムのリリースレベルを反映するよう展開され、$PLATFORM は、uname -i を実行した場合に表示されるように、基礎としているハードウェア実装を反映するよう展開されます。

次の例は、プラットフォーム固有のフィルティー libfoo.so.1 にアクセスするように補助フィルタ libbar.so.1 を設計する方法を示します。


$ LD_OPTIONS='-f /usr/platform/$PLATFORM/lib/libbar.so.1' ¥
cc -o libfoo.so.1 -G -K pic -h libfoo.so.1 -R. foo.c
$ dump -Lv libfoo.so.1 | egrep "SONAME|AUXILIARY"
[1]     SONAME    libfoo.so.1
[2]     AUXILIARY /usr/platform/$PLATFORM/lib/libbar.so.1

この仕組みは、共有オブジェクト /usr/lib/libc.so.1 に対してプラットフォーム固有の拡張を提供するために、Solaris 上で使用されます。


注 -

環境変数 LD_NOAUXFLTR を設定して、実行時リンカーの「補助」フィルタ処理を無効にすることができます。補助フィルタはプラットフォーム固有の最適化に使用されることが多いので、フィルティーを使用する場合および性能インパクトを評価する場合にこのオプションが便利です。