共有可能オブジェクトをリンクするとき、オブジェクトからエクスポートされるすべてのバージョンのシンボルが、通常はリンカーで使用可能になります。DEPEND_VERSIONS 指令は、指定したバージョンへのアクセスに限定するために使用されます。バージョンアクセスの制限は、古いバージョンのシステムで使用できない可能性がある新しい機能が出力オブジェクトで使用されないようにするために使用できます。
DEPEND_VERSIONS 指令には次の構文があります。
DEPEND_VERSIONS objname { ALLOW = version_name; REQUIRE = version_name; .... };
objname は、コマンド行で指定された共有オブジェクトの名前です。–l コマンド行オプションを使用してオブジェクトを指定する一般的な場合、これは指定された名前に lib 接頭辞が付いたものになります。たとえば、libc はコマンド行で一般的に –lc と参照されるため、DEPEND_VERSIONS 指令内では libc.so と指定されます。
ALLOW 属性は、指定されたバージョンと、そのバージョンによって継承されたバージョンが、出力オブジェクト内のシンボルを解決するためにリンカーによって使用可能であることを指定します。リンカーは、このバージョンを含む継承の連鎖内で使用されるもっとも高いバージョンの要件を、出力オブジェクトの要件に追加します。
REQUIRE は、リンク操作の要件を満たすために指定されたバージョンが実際に必要かどうかによらず、そのバージョンを出力オブジェクトの要件に追加します。