ild(1)

名前
ild - オブジェクトファイル用のインクリメンタル・リンカー

形式
ild [ -a ] [ -i ] [ -m ] [ -s ] [ -t ]
[ -V ] [ -B dynamic|static ] [ -d y|n ]
[ -e epsym ] [ -I name ] [ -L path ] [ -l x ]
[ -o outfile ] [ -Q y|n ] [ -R path ] [ -u symname ]
[ -Y P,dirlist ]
[ -z allextract|defaultextract|weakextract ]
[ -z defs|nodefs ] [ -z i_dryrun ]
[ -z i_full ] [ -z i_noincr ] [ -z i_quiet ]
[ -z i_verbose ]
filename ...

機能説明
Sun ONE Studio 8 インクリメンタル・リンカー。

マニュアルページは、クイックリファレンスです。 インクリメンタル・リンカー (ILD) とそのオプションについての詳細は、 C ユーザーズガイド を参照してください。

インストールした Sun ONE Studio 8 ドキュメント (README、ユーザーズガイド、リファレンス マニュアルを含む) すべてにアクセスするには、HTML ブラウザで以下を指定します。
file:/opt/SUNWspro/docs/ja/index.html

ild では変更部分だけがリンクされるので、変更していないオブジェクト ファイルは再リンクを行わずに、変更したオブジェクトコードを以前に作成した 実行可能ファイルに挿入することができます。 再リンクに必要な時間は、変更したコードの量によって異なります。 コードの変更が少ない場合は、リンク処理にかかる時間は短くなります。

ild コマンドを実行すると、再配置可能なオブジェクトファイルが 組み合わされて再配置され、外部シンボルの参照先が決定されます。 ild には、静的モードと動的モードの 2 つのモードがあります。 静的モードは -dn で指定し、引数に指定した 再配置可能なオブジェクトファイルが組み合わされて、1 つの 実行可能オブジェクトファイルが生成されます。 動的モード (デフォルト) は -dy で指定し、静的モードと同様に、 引数として与えられた再配置可能なオブジェクトファイルが 組み合わされて、1 つの実行可能なオブジェクトファイルが生成されますが、 実行時にこの実行ファイルは、引数として与えられた共有オブジェクトファイルと リンクされます。 どちらのモードでも、ild のデフォルトの出力ファイルは a.out です。

引数にライブラリが指定されている場合には、そのライブラリが引数リストに 出現した順に一度だけ検索されます。 指定するライブラリは、再配置可能なアーカイブでも、 共有オブジェクトでもかまいません。 アーカイブライブラリについては、未決定の外部参照を定義している ルーチンだけがロードされます。 アーカイブライブラリ・シンボルテーブル ( ar(4) を参照) は、 ライブラリメンバーによって外部参照が解決されるまで、何度も検索されます。 そのため、同じ外部シンボルを定義するライブラリメンバーが複数 存在する場合以外は、ライブラリメンバーの順番は機能に影響しません。 共有オブジェクトは 1 つの分割できない実体なので、 その参照は生成している実行可能ファイル内で決定されるかまたは、 リンク時に他の共有オブジェクト内で決定される必要があります。

ild または ld のどちらを使用してリンクを行うかを指定する オプションは、 -xildon (常に ild を使用) と -xildoff (常に ld を 使用) です。-xildon と -xildoff の両方が指定されている場合は、 -xildoff が適用されます。-xildoff も -G も指定されていない 場合、-g オプションは ild を使用してリンクのみを 実行します (コマンド行でソースファイルを指定しない)。 -G を指定すると、どちらのリンカが使用されるかが -g オプ ションによって決定されません。

注意 : -g オプションおよび -G オプションには、 上記以外のコンパイル機能があります。

-g を使用して ild を実行し、Makefile がデフォルトの構造 である場合 (リンク実行時にコマンド行で f3-g を指定する場合も含む) は、 自動的に ild が使用されます。

実装されていない ild オプションを指定 すると (「使用上の留意点」を参照)、 ild は直接 /usr/ccs/bin/ld を起動してリンクを実行します。

インクリメンタル・リンクの概要

インクリメンタル・モードでは、後にプログラムを拡張するときのために、 初期リンク時にさまざまなテキスト、データ、bss、例外テーブルセクション などにスペースが追加されます。また、すべての再配置レコード、 ranlib 指数、大域シンボルテーブルが ild によって 実行可能ファイルに保存されます。

次回にインクリメンタル・リンクを行うと、 タイムスタンプによってどのオブジェクトファイルが変更されたかが調べられ、 変更されたオブジェクトコードを以前に作成した実行可能ファイルに 追加します。すなわち、以前のバージョンのオブジェクトファイルは 無効になり、実行可能ファイルの パディングセクションに、新しいオブジェクトファイルがロードされます。 無効になったオブジェクトファイル内のシンボルに対する参照はすべて、 新しいオブジェクトファイル内のシンボルを参照するように変更されます。

オプション

-a  静的モードのみで、実行可能オブジェクトファイルを作成します。 未定義の参照にエラーを出します。静的モードのデフォルト動作です。

-i  LD_LIBRARY_PATH の設定を無視します。 LD_LIBRARY_PATH の設定が有効なときに、実行中のリンク処理に干渉する実行時ライブラリの 検索を変更する場合に使用します。 (これは LD_LIBRARY_PATH_64 の設定にも適用されます。)

-m  メモリーマップまたは入出力セクションのリストを生成し、 標準出力に出力します(「使用上の留意点」を参照)。

-s  シンボル情報を出力ファイルに出力しません。デバッグ情報 ( .debug, .line, .stab セクション) と、対応する再配置エントリが出力されなくなります。 再配置可能ファイルまたは共有オブジェクトファイルを除いて、 シンボルテーブルと文字列テーブルのセクションも出力ファイルに 出力されなくなります。 -t 複数回定義され、しかもサイズが異なるシンボルについての警告をオフにします。
    -V 使用している ild のバージョンに関するメッセージを出力します。

-B dynamic|static
    ライブラリの取り込みを制御するオプションです。 -Bdynamic は、動的モードのみで有効です。 これらのオプションをコマンド行で指定す るたびに、モードが切り換わります。-Bstatic を指定している場合に共 有オブジェクトを処理するには、-Bdynamic に切り替える必要がありま す。-l オプションを参照してください。

-d y|n
    -dy (デフォルト)を指定すると、動的リンク処理が実行されます。 -dn を指定すると、静的リンク処理が実行されます。 -B dynamic|static を参照してください。

-e epsym
    出力ファイルの入口点アドレスをシンボル epsym のアドレスに指定します。

-I name
    実行可能ファイルを作成するときは、プログラムヘッダに書き込まれるインター プリタのパス名として name を使用します。 静的モードでのデフォルトはインタープリタなしです。 動的モードでは、デフォルトはランタイムリンカ /usr/lib/ld.so.1の 名前です。どちらの場合も、-Iname で無効にすることが できます。exec システムコー ルは、a.out を ロードするときにこのインタープリタをロードし、インタープリタに 制御を渡します。a.out に直接渡すことはしません。

-L path
    ライブラリ検索ディレクトリに path を追加します。 ライブラリは、最初にオプション -L で指定されたディレクトリで 検索され、次に標準ディレクトリで検索されます。 このオプションは、同じコマンド行上の -l オプションの前に 指定した場合だけ有効です。環境変数 LD_LIBRARY_PATH および LD_LIBRARY_PATH_64 も、ライブラリ検索パスを追加することができます (以下の ENVIRONMENT を参照)。

-l x
    ライブラリ libx.so または libx.a を探索します。 これらはそれぞれ共有オブジェクトとアーカイブライブラリの一般的な名前です。 動的モード、すなわち -Bstatic オプションが指定されていないときは、 ライブラリ検索パスに指定された各ディレクトリで、 ファイル libx.so または ファイル libx.a を検索します。どちらかのファイルが含まれている最 初のディレクトリで、検索は停止します。libx.so と libx.a という形式のファイルが両方ともある場合は、 拡張子 .so が付いているファイルが使用されます。 libx.so がない場合は、libx.a が使 用されます。静的モードのとき、すなわち -Bstatic オプションが指定 されているときは、拡張子 .a が付いているファイルだけを使用します。 ライブラリは、ライブラリの名前が検出された時に検索されるので、 -l を指定するのは重要な意味があります。

-o outfile
    outfile という名前の出力オブジェクトファイルを作成します。 デフォルトのオブジェクトファイル名は a.out です。

-Q y|n
    -Qy を指定すると、出力ファイルの .comment セクションに、出力ファ イルの作成に使用したリンカのバージョンを識別する ident 文字列が追 加されます。この結果、複数回リンク処理を行った場合は、ld -r を使 用したときと同じように複数の ld idents が追加されます。これは cc コマンドのデフォルト処理と同じです。オプション -Qn を 指定すると、バージョンを識別する ident 文字列は追加されません。

-R path
    実行時リンカに渡されるライブラリ検索ディレクトリを、コロン (:) で 区切られたリストで指定します。path が存在しかつ空でない場合は、 path は出力オブジェクトファイルに記録され、実行時リンカに渡され ます。このオプションを複数回に分けて使用すると、指定された検索デ ィレクトリは連結されてコロンで区切られます。

-u symname
    symname をシンボルテーブルに未定義シンボルとして記入します。 これは、アーカイブライブラリ全体をロードするのに便利です。 初期的にはシンボルテーブルは空であり、最初のルーチンを ロードするために未解決の参照が必要だからです。 このオプションは、シンボルを定義するライブラリの前に指定してください。