リンカーとライブラリ

リンカーオプションの指定

リンカーに対するオプションの大部分は、コンパイラドライバのコマンド行経由で渡すことができます。コンパイラオプションとリンカーオプションは、ほとんど重複する部分はありません。重複が発生した場合は、通常、特定のオプションをリンカーに渡すことを許可するコマンド行構文が、コンパイラドライバによって提供されます。また、LD_OPTIONS 環境変数を設定して、リンカーにオプションを渡すこともできます。


$ LD_OPTIONS="-R /home/me/libs -L /home/me/libs" cc -o prog main.c -lfoo

-R オプションと -L オプションは、リンカーによって解釈されます。これらのオプションは、コンパイラドライバから受け取るコマンド行オプションより優先されます。

リンカーは、オプションリスト全体を構文解析し、無効なオプションまたは関連する引数が無効であるオプションを調べます。どちらかの無効なオプションが検索された場合は、該当するエラーメッセージが生成されます。致命的なエラーの場合は、リンカーは強制終了します。次の例では、リンカーの検査により、不当なオプション -X-z オプションに不当な引数が検出されています。


$ ld -X -z sillydefs main.o
ld: illegal option -- X
ld: fatal: option -z has illegal argument `sillydefs'

1 つの引数を必要とするオプションが 2 回指定された場合、リンカーは適切な警告を生成したあと、リンク編集を継続します。


$ ld -e foo ...... -e bar main.o
ld: warning: option -e appears more than once, first setting taken

また、リンカーはオプションリストの検査も行なって重大な不一致も検出します。


$ ld -dy -a main.o
ld: fatal: option -dy and -a are incompatible

すべてのオプションを処理しても重大なエラー状態が検出されなかった場合は、リンカーは次に入力ファイルの処理を行います。

通常使用されるリンカーオプションについては、付録 A リンカーのクイックリファレンスを参照してください。また、全リンカーオプションの詳細については、ld(1) のマニュアルページを参照してください。