この項では、コンパイルシステムで直接受け入れられるリンカー制御オプションと、コンパイルシステムから ild に渡されるリンカーオプションについて説明します。
コンパイルシステムで受け入れられるリンカー制御オプションには、次のものがあります。
-i
LD_LIBRARY_PATH 設定を無視します。LD_LIBRARY_PATH 設定が有効になっているときは、このオプションを使用すると、実行中のリンク編集の妨げとなる実行時ライブラリ検索を制御できます。
-s
出力ファイルからシンボリック情報を取り除きます。デバッグ情報と、それに対応するリロケーションエントリはすべて削除されます。リロケータブルファイルまたは共有オブジェクトを除き、シンボルテーブルセクションや文字列テーブルセクションも出力オブジェクトファイルから削除されます。
-V
使用中の ild バージョンに関するメッセージを出力します。
-B dynamic | static
ライブラリの内容を制御するオプションです。-Bdynamic オプションは、動的モードでのみ有効になります。これらのオプションは、トグルとしてコマンド行に何回でも指定することができます。-Bstatic オプションを指定すると、共有オブジェクトは -Bdynamic オプションを指定するまで受け入れられません。「-l x (スペースは任意)」オプションを参照してください。
-g
-g オプション (出力デバッグ情報) を指定すると、次のいずれかの条件が真でない限り、コンパイルシステムは ld の代わりに ild を起動します。
共有ライブラリを作成する -G オプションが指定されている
-xildoff オプションが指定されている
コマンド行にソースファイルが指定されている
-d y | n
-dy (デフォルト) を指定すると、ild は動的リンクを行い、-dn を指定すると、静的リンクを行います。「-B dynamic | static」オプションを参照してください。
-L path (スペースは任意)
path に指定されたパスをライブラリ検索用ディレクトリに追加します。ild は、まず -L オプションで指定されたディレクトリでライブラリを検索してから、次に標準のディレクトリを検索します。このオプションは、コマンド行で -l オプションより前に挿入されている場合のみ効果があります。環境変数の LD_LIBRARY_PATH を使用して、ライブラリ検索用のパスを追加することもできます。「LD_LIBRARY_PATH」を参照してください。
-l x (スペースは任意)
ライブラリ libx.so または libx.a を検索します。これらはそれぞれ、共有オブジェクトとアーカイブライブラリの慣用名になります。動的モードでは、-Bstatic オプションが有効でない限り、ild は、libx.so または libx.a ファイルのライブラリ検索用パスに指定されたディレクトリを検索します。-l オプションによって、libx.so および libx.a 形式の名前の 2 つのファイルが指定されている場合、ild は末尾が .so のファイルを選択し、そのファイルが検出された最初のディレクトリで検索を終了します。libx.so ファイルが検出されなかったときは、libx.a ファイルを検索します。静的モード、あるいは -Bstatic オプションが有効な場合には、ild は末尾が .a のファイルだけを選択します。ライブラリの検索は、名前が指定された場合のみ行われます。したがって、-l オプションの挿入には重要な意味が含まれます。
-o outfile
outfile に指定された名前の出力オブジェクトファイルを作成します。デフォルトのオブジェクトファイル名は、a.out です。
-Q y | n
-Qy オプションを指定すると、出力ファイルの .comment セクションに ident 文字列が追加され、ファイルの作成に使用されたリンクエディタのバージョンが識別されます。ld -r を使用した場合のように、複数のリンク手順がある場合は、複数の ld ident が追加されます。これは、cc コマンドのデフォルトのアクションと同じ結果になります。-Qn オプションを指定した場合には、バージョンの識別は行われません。
-R path (スペースは任意)
このオプションは、コロンで区切られたディレクトリのリストを指定することにより、実行時リンカーにライブラリ検索用ディレクトリを指示します。path は、空白でなければ、出力オブジェクトファイルに記録され、実行時リンカーに渡されます。このオプションのインスタンスを複数指定する場合は、コロンで区切りながら続けていきます。
-xildoff
インクリメンタルリンカーをオフにし、バンドルされた ld を強制的に使用します。-g オプションが使用されていない場合、または -G オプションが使用されている場合、このオプションはデフォルトになります。このデフォルトは、-xildon を使用して無効にすることができます。
-xildon
インクリメンタルリンカーを起動します。ild をインクリメンタルモードで強制的に実行します。-g オプションが使用されている場合、このオプションはデフォルト設定になります。このデフォルトは、-xildoff を使用して無効にすることができます。
-Y P, dirlist (スペースは任意)
cc 専用です。ライブラリの検索に使用されるデフォルトのディレクトリを変更します。dirlist オプションには、コロンで区切られたパスのリストを入力します。
「-z name」形式は、ild によって特別なオプションに使用されます。-z オプションの前に「i_」を挿入すると、ild 固有のオプションが識別されます。
-z defs
リンクの最後に未定義のシンボルが残っている場合に、強制的に致命的なエラーを発生させます。このオプションは、実行可能ファイルを作成しているときのデフォルトになります。また、共有オブジェクトを作成して、そのオブジェクトが自己充足型 (すべてのシンボリック参照が内部的に解決される型) であることを確証する場合にも便利です。
-z i_dryrun
ild 専用です。ild によってリンクされるファイルのリストを出力し、終了します。
-z i_full
ild 専用です。インクリメンタルモードで完全な再リンクを行います。
-z i_noincr
ild 専用です。ild をインクリメンタルでないモードで実行します。通常の使用はお薦めできません。テスト目的だけに使用するようにしてください。
-z i_quiet
ild 専用です。ild の再リンクメッセージをすべて非表示にします。
-z i_verbose
ild 専用です。一部の ild の再リンクメッセージに含まれるデフォルト情報を展開表示します。
-z nodefs
未定義のシンボルを許可します。このオプションは、共有オブジェクトを作成しているときのデフォルトになります。実行可能ファイルで使用した場合、このような「未定義シンボル」に対する参照動作は指定されません。
-z weakextract
シンボルに対する弱い参照は、シンボルを静的ライブラリから引用するようファイルに定義します。
以下のオプションも ild によって受け入れられますが、次の書式を使用して、コンパイルシステム経由で ild に渡す必要があります。
-Wl, arg,arg (cc の場合)、または -Qoption ld arg, arg (その他の場合)
-a
静的モードのときのみ実行可能オブジェクトファイルを作成します。未定義の参照には、エラーを発生させます。これは、静的モードのデフォルト動作になります。-a オプションは -r オプションと共に使用することはできません。
-m
標準の出力に、メモリーマップまたは入出力セクションのリストを作成します。
-t
多重定義されているシンボルや、サイズの異なるシンボルに関する警告機能をオフにします。
-e epsym
出力ファイルのエントリ位置のアドレスを、epsym で指定するシンボルの位置に設定します。
-I name
実行可能ファイルの作成時は、プログラムヘッダーに書き込まれるインタプリタのパス名として name を使用します。静的モードでは、デフォルトにより、インタプリタは使用されません。動的モードでは、実行時リンカー名 /usr/lib/ld.so.1 がデフォルトとして使用されます。これらはいずれも、-I name オプションによって無効にできます。exec システムコールは、a.out の読み込み時にこのインタプリタを読み込み、制御を a.out に直接渡すのではなく、読み込んだインタプリタに渡します。
-u symname
シンボルテーブルに未定義のシンボルとして symname を挿入します。このオプションは、アーカイブライブラリ全体を読み込むときに便利です。シンボルテーブルは最初は空になっており、最初のルーチンを強制的に読み込むために未解決の参照が必要だからです。したがって、コマンド行にこのオプションを挿入することは重要な意味を持ちます。このオプションは、シンボルが定義されているライブラリの前に挿入しなければなりません。