リンカーとライブラリ

補助検索の縮小

補助フィルタ内で $ISALIST を使用すると、1 つあるいは複数のフィルティーが、フィルタ内で定義されたインタフェースの代替の実装を提供できます。

ただし、フィルタで定義されたインタフェースにフィルティーで定義された代替の実装がない場合は、要求されたインタフェースの場所を探すために、可能性のあるフィルティーすべてを徹底的に検索する結果となります。性能が重要となる機能を提供するためにフィルティーを使用する場合には、徹底的にフィルティーを検索することによって生産性が下がることがあります。

リンカーの -z endfiltee オプションを使用してフィルティーを作成し、それが使用可能な最後のフィルティーであると指定し、そのフィルタについてそれ以上のフィルティー検索を行わないようにできます。たとえば、前の SPARC の例で、sparcv9 フィルティーが存在し、-z endfiltee のタグが付いている場合、フィルティー検索は次のようになります。


$ ldd -ls prog
.....
 find object=libbar.so.1; required by ./libfoo.so.1
   search path=/opt/ISV/lib/$ISALIST  (RPATH from file ./libfoo.so.1)
     trying path=/opt/ISV/lib/sparcv9+vis/libbar.so.1
     trying path=/opt/ISV/lib/sparcv9/libbar.so.1