名前 | 形式 | 機能説明 | オプション | 環境 | ファイル | 属性 | 関連項目 | 注意事項
ld コマンドは、複数の再配置可能オブジェクトファイルの結合、再配置の実行、外部シンボルの解釈処理を行います。ld は 2 つのモード (静的モードと動的モード) で動作します。モードの指定には、-d オプションを使用します。いずれの場合も、ld の実行結果はデフォルトで a.out ファイルに出力されます (「注意事項」を参照)。
静的モード (-dn) では、引数として指定した再配置可能オブジェクトファイルが結合され、実行可能なオブジェクトファイルが生成されます。同時に -r オプションを指定すると、再配置可能オブジェクトファイルが結合され、1 つの再配置可能オブジェクトファイルが生成されます。
デフォルトのモードである動的モード (-dy) では、再配置可能オブジェクトファイル (引数として指定) が結合され、共有オブジェクトファイル (引数として指定) と実行時にリンクする実行可能なオブジェクトファイルが生成されます。同時に -G オプションを指定すると、再配置可能オブジェクトファイルが結合され、共有オブジェクトが生成されます。
ライブラリを含む複数の引数を指定した場合、デフォルトでは、このライブラリの検索は、引数リスト内でライブラリが検出されたときに 1 度だけ実行されます。ライブラリとして指定できるのは、再配置可能アーカイブか共有オブジェクトです (ar(3HEAD) を参照)。
アーカイブライブラリの場合、未解決の外部参照を定義するルーチンだけが読み込まれます。ld は、ライブラリメンバーによって外部参照が解決されるまで、複数のパスで、アーカイブライブラリのシンボルテーブルを順番に検索します 。このため、1 つの外部シンボルが複数のライブラリメンバーによって定義されている場合を除けば、ライブラリ内でのメンバーの順序は、機能上は重要ではありません。相互依存の関係にあるアーカイブライブラリには、複数のコマンド行定義を指定するか、-z rescan オプションを使用する必要があります。
共有オブジェクトは不可分の完全なユニットで、1 つ以上の入力ファイルをリンクすることによって生成されます。リンカーが共有オブジェクトを処理すると、共有オブジェクトの内容すべてが、結果の出力ファイルイメージの論理部分になります。共有オブジェクトが実際に取り込まれるのはプロセスの実行時であるため、リンク処理中に物理的なコピー処理が行われることはありません。リンク時の共有オブジェクトの論理的な取り込みによって、このオブジェクト内に定義されているすべてのシンボルのエントリがリンク処理可能になります。
64 ビットオブジェクトをリンクするためのオプションは不要です。リンカーは、コマンド行に最初に指定されている再配置可能オブジェクトファイルの ELF クラスによって、32 ビットまたは 64 ビットのどちらにリンクを実行するかを決定します。32 ビットオブジェクトと 62 ビットオブジェクトを混在させることはできません。-64 オプションと LD_NOEXEC_64 の記述も参照してください。
次のオプションを指定できます。
64 ビットオブジェクトを作成します。デフォルトでの生成されるオブジェクトのクラスは、コマンド行から処理される最初の ELF オブジェクトによって決まります。このオプションは、mapfile (-M の説明を参照) からの入力のみで ld を使用してオブジェクトを直接作成する時に便利です。
静的モード専用です。実行可能なオブジェクトファイルを生成し、未定義の参照があるとエラーを発行します (静的モードのデフォルトの動作)。-r オプションと同時に使用することはできません。
動的モード専用です。実行可能ファイルを作成する際、共有オブジェクト内のシンボルを参照するような特殊な再配置処理を行いません。-b オプションを指定しない場合、リンカーは、位置に依存しない特殊な再配置を作成し、これを使って共有オブジェクト内に定義されている関数を参照します。また、共有オブジェクト内に定義されているデータオブジェクトが実行時リンカーによって実行可能ファイルのメモリーイメージにコピーされるようにします。
このオプションは、特殊化された動的オブジェクトを対象としているため、一般的な用途に使用することはお勧めしません。このオプションを使用すると、オブジェクトに共有性を持たせるために必要なすべての特殊処理が無効になります。また、64 ビット実行可能オブジェクトの再配置を妨げることもあります。
各シンボル参照と定義を提供している依存関係との関連を記録することによって、直接結合の情報を確立します。実行時リンカーは、デフォルトのシンボル検索を行わずに、この情報を使用して、関連付けられたオブジェクト中のシンボルを直接検索します。直接結合の情報は、リンク時に指定された依存関係に対してのみ確立されるため、リンク時に -z defs オプションを使用する必要があります。直接結合中のシンボルよりも優先させたいオブジェクトは、-z interpose オプションを使用して指定する必要があります。-B direct オプションを使用すると、すべての依存関係に対して -z lazyload が有効になります。
ライブラリの取り込みを制御するオプションです。-B dynamic は、動的モードでのみ有効です。-B dynamic オプション、-B static オプションは、コマンド行のトグルとして何度でも指定できます。たとえば、-B static オプションを指定すると、次に -B dynamic オプションが指定されるまで共有オブジェクトは受け付けられなくなります。-l オプションも参照してください。
バージョン定義に割り当てられていない大域シンボルを、シンボルテーブルから削除します。このオプションでは、mapfile バージョン定義の一部として使用する auto-elimination 指令と同じようなシンボル削除処理が行われます。
共有オブジェクトとその依存オブジェクトを 1 つのグループにまとめます。グループ内のオブジェクトは、実行時に、グループ内の他のメンバーに結合されます。このフラグを持つオブジェクトの実行時プロセスは、RTLD_GROUP モードで dlopen(3DL) を使用してプロセスにオブジェクトを追加した場合と同じように動作します。あるグループに属しているオブジェクトに対して明示的な依存関係を持つオブジェクトは、自分自身もそのグループのメンバーになります。
グループは自己完結している (依存関係がグループ内で解決されている) 必要があるため、-z defs オプションを追加して、グループが自己完結していることを確認してください。
バージョン定義に割り当てられていない大域シンボルの割り当てを変更して、ローカルシンボルにします。バージョン定義とは、生成されたオブジェクト内で外部から参照可能なままにしておく必要がある大域シンボルを指定するもので、mapfile を介して提供されます。このオプションでは、mapfile バージョン定義の一部として使用する auto-reduction 指令と同じようなシンボルの割り当て変更処理を実行できます。この機能は、バージョン化された再配置可能オブジェクトとバージョン化されていないオブジェクトを統合する場合に便利です。
再配置可能オブジェクトを生成する際、バージョン定義で指定されているシンボル情報を縮約します。バージョン定義は、生成されたオブジェクト内で外部から参照可能なままにしておく必要がある大域シンボルを指定するもので、mapfile を介して提供されます。再配置オブジェクトが生成されると、バージョン定義は出力イメージに単純に転記されます (デフォルト)。シンボル情報の縮約は、動的実行可能ファイルまたは共有オブジェクトの構築にオブジェクト自体が使用されるまで、実際には行われません。動的実行可能ファイルや共有オブジェクトを生成する時には、自動的にこのオプションが適用されます。
動的モード専用です。共有オブジェクトを作成する際、可能であれば、大域シンボルへの参照を共有オブジェクト内の参照定義に結合します。通常、共有オブジェクト内の大域シンボルへの参照は、定義が使用可能でも実行時まで結合されません。このため、実行可能オブジェクト内または他の共有オブジェクト内に定義された同一のシンボルによって、オブジェクト自体の定義が無効になる可能性があります。-z defs オプションによって無効にしない限り、ld はシンボルが未定義であることを知らせる警告を出力します。
このオプションは、特殊化された動的オブジェクトを対象としているため、一般的な用途に使用することはお勧めしません。オブジェクトの実行時に再配置のオーバーヘッドを軽減するには、バージョン定義を作成することをお勧めします。
実行時に使用する構成ファイル name を記録します。構成ファイルは、デフォルト検索パスの変更に使用されます。また、ディレクトリキャッシュや代替オブジェクトの依存関係を提供します (crle(1) を参照)。
診断メッセージに表示される C++ シンボル名を復号化します。
-d y が指定されている場合 (デフォルト)、ld は動的リンクを使用します。-d n が指定されている場合、ld は静的リンクを使用します。-B dynamic | static の項目も参照してください。
token に指定したデバッグ情報を標準エラーに出力します。help は、使用可能なトークンをすべて指定した場合と同じ意味を持つ特殊なトークンです。
出力ファイルのエントリポイントのアドレスとして、シンボル epsym のアドレスを設定します。
共有オブジェクトの作成時に使用するオプションです。このオプションを指定すると、共有オブジェクトのシンボルテーブルが、name に指定した共有オブジェクトのシンボルテーブルで、補助フィルタとして使用されるようになります。このオプションは複数回指定できますが、-F オプションと同時に指定することはできません。
共有オブジェクトの作成時に使用するオプションです。このオプションを指定すると、共有オブジェクトのシンボルテーブルが、name に指定した共有オブジェクトのシンボルテーブルで、フィルタとして使用されるようになります。このオプションは複数回指定できますが、-f オプションと同時に指定することはできません。
動的モード専用です。共有オブジェクトを生成します。未定義のシンボルも許容されます。
動的モード専用です。共有オブジェクトの作成時、name をオブジェクトの動的セクションに記録します。name は、オブジェクトのシステムファイルではなく、このオブジェクトにリンクされた動的オブジェクトに記録されます。このため、実行時リンカーは、実行時に検索する共有オブジェクト名として name を使用します。
LD_LIBRARY_PATH の設定を無視します。LD_LIBRARY_PATH の設定がリンク処理の妨げになる場合は、このオプションを使用して、実行時のライブラリ検索への影響を防ぎます。
実行可能オブジェクトの作成時、プログラムヘッダーに書き込まれるインタプリタのパス名として name を使用します。静的モードのデフォルトの設定では、インタプリタは使用されません。動的モードのデフォルトの設定では、実行時リンカー ld.so.1(1) が使用されます。どちらの場合も、-I name でデフォルトの設定を無効にできます。exec(2) は、a.out を読み込む際にこのインタプリタを読み込み、a.out ではなくインタプリタに制御を渡します。
ライブラリ libx.so (共有オブジェクトの慣例的な名前) または libx.a (アーカイブライブラリの慣例的な名前) を検索します。動的モードでは、-B static オプションが有効になっている場合を除けば、ライブラリ検索パスに指定された各ディレクトリ内で、libx.so ファイルまたは libx.a ファイルが検索されます。ディレクトリ検索は、どちらかのファイルが入っているディレクトリを検出した時点で終了します。-lx が、libx.so、libx.a という形式の名前を持つ 2 つのファイルに展開される場合、.so ファイルが選択され、libx.so が見つからない場合は libx.a が選択されます。静的モードを使用している場合や -B static オプションが有効になっている場合は、.a ファイルだけが選択されます。ld は、ライブラリの名前を検出した時点でライブラリの検索を実行するので、-l の位置は重要な意味を持ちます。
path をライブラリ検索ディレクトリに追加します。ld のライブラリ検索は、まず -L オプションで指定したディレクトリで行われ、次に標準ディレクトリで行われます。このオプションは、同一コマンド行の -l オプションより前に指定した場合のみ有効です。環境変数 LD_LIBRARY_PATH を使用してライブラリ検索パスを追加することもできます (LD_LIBRARY_PATH を参照)。
メモリーマップ (入出力セクションのリスト) と、致命的ではない多重定義シンボルを生成し、標準出力に出力します。
マップファイル mapfile を、ld への指令が記述されているテキストファイルとして読み取ります。このオプションは複数回指定できます。mapfile がディレクトリの場合、stat(2) で定義されるように、そのディレクトリ内のすべての通常ファイルが処理対象になります。 マップファイルの詳細については、『リンカーとライブラリ』を参照してください。/usr/lib/ld ディレクトリには、プログラムのデフォルトの配置が指定されているマップファイル、4 ギガバイト以上または 4 ギガバイト未満の 64 ビット対応プログラムをリンクするためのマップファイル、および、アプリケーション内に実行不可能なスタックを確立するためのマップファイルがあります。後述の「ファイル」の項を参照してください。
このオプションを指定すると、作成されるオブジェクトの .dynamic セクションに DT_NEEDED エントリが追加されます。DT_NEEDED 文字列の値は コマンド行で指定した string です。このオプションは位置に依存します。このため、DT_NEEDED .dynamic エントリはリンク行にある他の動的な依存オブジェクトに対して相対的になります。デバイスドライバの再配置可能オブジェクト間の依存関係を指定するときに、このオプションをオプション -dy および -r と組み合わせて使用すると便利です。
outfile という名前の出力オブジェクトファイルを生成します。デフォルトのオブジェクトファイル名は、a.out です。
実行時のオブジェクトの監査に使用する監査ライブラリ auditlib を識別します。自分自身の監査を行うような共有オブジェクトと依存関係にあるオブジェクトは、この共有オブジェクトの性質を継承し、自分自身の監査を行います (-P オプションを参照)。
指定のオブジェクトと依存関係にあるオブジェクトの実行時監査用ライブラリ auditlib を識別します。この監査は、このオブジェクトと依存関係にあり、監査を行う必要があるオブジェクトから継承される場合もあります (-p オプションを参照)。
-Q y を指定すると、出力ファイルの作成に使用されたリンカーのバージョンを識別する ident 文字列が、出力ファイルの .comment セクションに追加されます。このため、複数のリンク手順 (ld -r を使用した場合など) を経て作成されたファイルには、複数の ld ident があることになります。これは、cc コマンドのデフォルト時の動作と同じです。-Q n は、バージョンの識別を抑止します。
再配置可能オブジェクトファイルを結合して、1 つの再配置可能オブジェクトファイルを生成します。ld は、未解決の参照があってもメッセージを出力しません。このオプションは、-a と同時には使用できません。
複数のディレクトリをコロンで区切って指定します。このリストは、実行時リンカーにライブラリ検索ディレクトリを指定する際に使用されます。NULL 以外の文字列は、出力オブジェクトファイルに記録され、実行時リンカーに渡されます。このオプションを複数回指定する場合と、コロンで区切って path を指定する場合の結果は同じになります。
出力ファイルからシンボル情報を取り除きます。デバッグ情報 (.line、.debug*、.stab の各セクション) と、これらに関連する再配置エントリは、すべて削除されます。再配置可能ファイルを除き、シンボルテーブル SHT_SYMTAB とそれに関連する文字列テーブルのセクションは、出力オブジェクトファイルに作成されません (-z redlocsym オプションを参照)。
リンカーによって共有オブジェクト supportlib が読み込まれ、このオブジェクトにリンクのプロセスに関する情報が提供されます。環境変数 SGS_SUPPORT を使用すると、サポートされている共有オブジェクトにも同じ情報が提供されます。詳細については、『リンカーとライブラリ』を参照してください。
サイズの異なる多重定義シンボルを検出した場合の警告の出力を抑止します。
symname を、未定義シンボルとしてシンボルテーブルに入力します。このオプションは、すべてのルーチンをアーカイブライブラリから読み込む場合に便利です。これは、最初は空の状態になっているシンボルテーブルに、最初のルーチンを読み込むために、未解決の参照が必要になるからです。コマンド行内でのこのオプションの位置は重要な意味を持ち、シンボルを定義するライブラリより前に配置する必要があります。
使用する ld のバージョン情報を示すメッセージを出力します。
ライブラリ検索に使用するデフォルトのディレクトリを変更します。dirlist には、複数のパスをコロンで区切って指定します。
動的な実行可能オブジェクトを構築する場合にのみ効果を発揮します。このオプションは、外部の絶対的シンボルへの参照を、実行時ではなく今すぐに解決するよう指示します。これによって、ある条件が整った場合には、動的オブジェクトがスワップ領域を大量に消費する可能性のあるテキストの再配置を行わなくなります。
後続のすべてのアーカイブのオブジェクトの抽出条件を変更します。デフォルトでは、アーカイブメンバーは、未定義の参照を解決し、データ定義による仮の定義を行うために抽出されます。弱いシンボル参照は抽出を行いません。-z allextract を指定すると、すべてのアーカイブメンバーがアーカイブから抽出されます。-z weakextract を指定すると、弱い参照によってアーカイブの抽出が行われます。-z defaultextract を指定すると、既に指定されている抽出オプションを無効にし、デフォルトの状態に戻すことができます。
複数の再配置セクションを結合します。通常、再配置セクションは、再配置の対象となるセクションと 1 対 1 の対応で保持されています。実行可能オブジェクトまたは共有オブジェクトを作成する際に ld は、データ再配置セクションのエントリを各エントリのシンボル参照によってソートして、実行時のシンボル参照を最低限に抑えます。複数のデータ再配置セクションを結合することで、このソート処理を最適化できるため、複数のオブジェクトをメモリーに読み込むときの再配置オーバーヘッドを最低限に抑えることができます。
-z defs オプションは、リンク終了時に未定義のシンボルがあると、致命的エラーを強制的に出力します。これは、実行可能オブジェクトを作成する場合のデフォルトの設定ですが、歴史的経緯から、共有オブジェクトを作成する場合にはデフォルトではありません。共有オブジェクト作成時に、そのオブジェクトが自己完結していること (シンボル参照がそのオブジェクト内またはそのオブジェクトの依存関係の中で解決されていること) を確認できるため、-z defs オプションを使用することをお勧めします。
-z nodefs オプションは、未定義のシンボルを許可します。歴史的経緯から、共有オブジェクトを作成する場合には、この動作がデフォルトになっています。このオプションを実行可能ファイルに対して指定した場合の、未定義のシンボルに対する参照の動作は不定です。-z nodefs オプションを使用することは、お勧めしません。
コマンド行であとに続くすべての依存関係への直接結合を有効または無効にします。このオプションにより、グローバルな複製 -B direct よりも直接結合を効率よく制御できます。
フィルタ処理の対象オブジェクトに印をつけます。フィルタによる検索処理は、このオブジェクトを検出した時点で終了します。
構築するオブジェクトの .finiarray セクションにエントリを追加します。.finiarray セクションが存在しない場合は、新たに作成します。追加されたエントリは function を指すように初期化されます。詳細については『リンカーとライブラリ』を参照してください。
一意のグループにつながる依存関係の割り当て、または割り当ての解除を行います。グループに対して依存関係の割り当てを行うと、-B group オプションを使って依存関係を構築した場合と同じ効果が得られます。
リンク処理の一部として参照されない動的依存関係を無視または記録します。デフォルトでは -z record が有効です。
ELF セクションを無視すると、生成される出力ファイルから削除されます。次の 3 つの条件が真である場合、セクションは無視されます。セクションが割り当て可能なセグメントに使用される場合、セクションがグローバルシンボルを 1 つも提供しない場合、リンクエディタに使用されるあらゆるオブジェクトのセクションが参照しない場合、です。
構築するオブジェクトの .initarray セクションにエントリを追加します。.initarray セクションが存在しない場合は、新たに作成します。追加されたエントリは function を指すように初期化されます。詳細については『リンカーとライブラリ』を参照してください。
オブジェクトの実行時初期設定が完了してから、他のオブジェクトの実行時初期設定を同時処理します。また、同時プロセスから除去された他のすべてのオブジェクトの実行時最終設定が完了してから、オブジェクトの実行時最終設定が行われるようにします。このオプションは共有オブジェクトの作成時にのみ有用です。
直接結合よりも優先して検索するオブジェクトを指定します。直接結合が有効な時 (-B direct の説明を参照してください)、実行時リンカーは、直接結合に関連付けられているオブジェクトよりも先に、このオブジェクト中のシンボルを検索します。
遅延して読み込まれる動的な依存オブジェクトの指定を有効または無効にします。lazyload と指定された動的な依存オブジェクトは、初期プロセスの起動では読み込まれません。オブジェクトの読み込みは、はじめてこのオブジェクトへの結合が行われたときに行われます。注: 遅延読み込みには、プロセス内で使用する動的なオブジェクトごとに、正しい依存宣言と関連する runpath が必要です。詳細は、『リンカーとライブラリ』を参照してください。
リンカーのクラスは、作成される出力ファイルのクラスおよびリンカーが実行されているオペレーティングシステムの機能によって変わります。このオプションを使用すると、指定した引数が、32 ビットリンカーのクラスとしてのみ、または、 64 ビットリンカーのクラスとしてのみ解釈されます。
たとえば、サポートするライブラリがクラスに固有のものである場合に、そのライブラリに正しいクラスを指定するには、次のようにします。
ld ... -z ld32=-Saudit32.so.1 -z ld64=-Saudit64.so.1 ... |
注: 起動されたリンカーのクラスは、コマンド行に入力ファイルとして最初に指定されている再配置可能ファイルの ELF クラスによって、ある程度特定されます。これは、-z ld[32|64] による処理の前に行われます。
フィルタを作成するとき、フィルタ対象が実行時ただちに処理されることを要求するように、オブジェクトに指定します。通常、フィルタ処理は、シンボル参照がフィルタに結合されたときにはじめて行われます。このフラグを持つオブジェクトの実行時プロセスは、環境変数 LD_LOADFLTR が設定されている場合と同じように動作します。ld.so.1(1) を参照してください。
複数のシンボル定義を許容します。デフォルトでは、再配置可能オブジェクト間で重複したシンボル定義が発生すると、致命的なエラーになります。ところが、このオプションを指定すると、エラーにはならずに、最初の定義が有効な定義として使用されます。
オブジェクトが、実行時デフォルトライブラリ検索パス (LD_LIBRARY_PATH や実行パス runpath の後に使用) を無視するように指定します。このように指定すると、すべての依存オブジェクトが実行パス runpath を使用することになります。
実行時に削除できないように、オブジェクトに指定します。このフラグを持つオブジェクトの実行時プロセスは、RTLD_NODELETE モードで dlopen(3DL) を使用して、オブジェクトをプロセスに追加する場合と同じように動作します。
オブジェクトを、dlopen(3DL) では利用できないように指定するか、dlopen() によって指定されたオブジェクトとして指定します。または dlopen() によって指定されたオブジェクトに必要な依存オブジェクトとして指定します。このオプションは、共有オブジェクトを作成している場合にのみ有用です。
オブジェクトを、dldump(3DL) では利用できないように指定します。
再配置可能な入力オブジェクトファイル内に、部分的に初期化されたシンボルがある場合、このシンボルは、出力ファイルの生成時に展開されます。
どのバージョンのセクションも記録しません。バージョンセクションや関連する .dynamic セクションエントリは、出力イメージ内に生成されません。
オブジェクトが実行時リンカーのデフォルトモードを無効にして、遅延のない実行時結合を要求するように指定します。これは、dlopen(3DL) を使用して オブジェクトを RTLD_NOW モードでプロセスに追加したり、環境変数 LD_BIND_NOW を設定したりすることに似ています。ld.so.1(1) を参照してください。
実行時ただちに $ORIGIN を処理することを要求するように、オブジェクトに指定します。この動作は現在はデフォルトです。このオプションは、従来機能との互換性のためにのみ残されています。
構築するオブジェクトの .preinitarray セクションにエントリを追加します。.preinitarray セクションが存在しない場合は、新たに作成します。追加されたエントリは function を指すように初期化されます。詳細については『リンカーとライブラリ』を参照してください。
SHT_SYMTAB シンボルテーブルから、SECT シンボル以外のすべてのローカルシンボルを削除します。ローカルシンボルを参照する配置はすべて更新され、SECT シンボルを参照するようになります。
リンカーに渡されたアーカイブファイルを再走査します。デフォルトでは、アーカイブの検索は、コマンド行に指定されたときに一度だけ処理されます。通常アーカイブは、そのシンボル定義でアーカイブの前に指定されている参照を解決できるように、コマンド行の最後に指定します。しかし実際には、アーカイブ間での相互依存関係を解決するために、アーカイブ自体を複数回指定しなければならないことが多くあります。
-z rescan オプションを指定すると、アーカイブリスト全体を再度処理して、シンボル参照を解決するアーカイブメンバーがあるかどうかを調べます。このアーカイブ再走査は、渡されたアーカイブリストに新しいメンバーが検出されなくなるまで続けられます。
動的モード専用です。書き込み不可の割り当て可能セクションに対する再配置があると、強制的に致命的エラーを出力します。歴史的理由から、この動作は、実行可能オブジェクトまたは共有オブジェクトを作成するときのデフォルトではありません。作成される動的オブジェクトのテキスト部分が実行中の複数のプロセスによって共有可能であり、オブジェクトをメモリーに読み込むときの再配置オーバーヘッドが最低限に抑えられることを保証するので、このオプションを使用することをお勧めします。
動的モード専用です。書き込み不可の割り当て可能セクションをはじめとするすべての割り当て可能セクションに対して、再配置を許可します。共有オブジェクト作成時のデフォルトの設定です。
動的モード専用です。書き込み不可の割り当て可能セクションに 対する再配置があると、警告を出力します。実行可能オブジェクト作成時のデフォルトの設定です。
-l オプションで指定されたライブラリを検索するディレクトリのリストを指定します。複数のディレクトリを指定する場合は、ディレクトリとディレクトリの間をコロンで区切ります。次のように、2 つのディレクトリをセミコロンで区切る方式が最も一般的です。
dirlist1;dirlist2 |
以下のように ld の呼び出し時に -L が複数回指定されている場合、
ld . . . -Lpath1 . . . -Lpathn . . . |
dirlist1 path1 . . . pathn dirlist2 LIBPATH |
ディレクトリリストにセミコロンが含まれていない場合、dirlist2 と解釈されます。
LD_LIBRARY_PATH 環境変数も、動的な依存関係を検索する実行時リンカーに影響を及ぼします。
この環境変数には、_32 または _64 という接尾辞を指定できます。この接尾辞を追加することで、LD_LIBRARY_PATH 環境変数は 32 ビットのプロセスまたは 64 ビットのプロセス専用になり、接尾辞のない LD_LIBRARY_PATH環境変数が有効な場合でも、優先的に使用されます。
64 ビットのリンカーが自動的には実行されないようにします。デフォルトでは、最初に読み取った再配置可能ファイルの ELF クラスが 64 ビットオブジェクトである場合は、自動的に 64 ビット版のリンカーが起動されます。32 ビット版のリンカーが作成できる 64 ビットイメージにはいくつかの制限がありますが、リンク編集の中には、32 ビットのリンカーを使用した方が速いものも存在します。
ld のデフォルトのオプションセットです。LD_OPTIONS の値は、コマンド行で ld の起動コマンドの直後に指定されたものと解釈されます。つまり、次のように指定した場合と同じ結果になります。
ld $LD_OPTIONS . . . other-arguments . . . |
リンカーに実行パスを指定する代替手段です ( -R オプションを参照)。LD_RUN_PATH と -R オプションを両方指定すると、-R オプションが優先されます。
リンカーによって読み込まれ、リンクプロセスの情報を与えられた共有オブジェクトを、コロンで区切った形式で一覧します。この環境変数には、接尾辞として _32 または _64 を指定できます。こうすることで、この環境変数を、ld の 32 ビットクラスまたは 64 ビットクラスのどちらか専用にすることができます。この指定は、現在有効になっている接尾辞の付いていない環境変数の指定より優先されます。-S オプションも参照してください。
文字列 LD_ で始まる環境変数名は、ld と ld.so.1(1) の拡張用として予約されています。
共有オブジェクトライブラリ
アーカイブライブラリ
デフォルトの出力ファイル
/usr/lib (32 ビットライブラリ用)、または /usr/lib/sparcv9 (64 ビット SPARCV9 ライブラリ用)
bss 整列用のテンプレートを提供するマップファイル
32 ビットプログラムのデフォルトの配置を指定するマップファイル
実行不可能なスタックの定義を指定するマップファイル
64 ビット SPARC V9 プログラムのデフォルトの配置を指定するマップファイル
4G バイト以上の 64 ビット SPARC V9 プログラムの望ましい配置を指定するマップファイル
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWtoo |
as(1), crle(1), gprof(1), ld.so.1(1), pvs(1), exec(2), stat(2), dlopen(3DL), dldump(3DL), elf(3ELF), ar(3HEAD), a.out(4), attributes(5)
ld のデフォルト動作を指定するためのオプションは、歴史的理由から残されています。しかし、動的オブジェクトが広く使用されている現在のプログラミング環境では、従来とは異なるデフォルトの方が有効である場合が少なくありません。しかし、従来のデフォルトは、既存のプログラム開発環境との互換性を維持するために残しておく必要があります。このマニュアルでは従来のデフォルトは、可能な限り、そのことを明示する方法で記述します。現在推奨されているオプションについては、『リンカーとライブラリ』の「リンカーのクイックリファレンス」を参照してください。
ld により作成されるたファイルがすでに存在する場合、そのファイルは、すべての入力ファイルが処理された後に破棄され、新しいファイルに置き換えられます。サイズの大きな出力ファイルが複数存在すると、システムのリソースを消費してしまうことが多いため、ld は、リンク編集中に一時ファイルを作成しません。しかし、既存のファイルが実行中のプロセスで使用されている場合は、問題が発生します。既存のファイルを使用していたプロセスは、出力ファイルのイメージが作成された時点で終了させられてしまうことがあります。この問題を回避するには、リンク編集を実行する前に、出力ファイルを削除してください。出力ファイルを削除しても、実行中のプロセスに影響はありません。これは、実際のディスク領域ではなく、ファイルシステムのネームスペースが新規出力ファイル作成用に解放されるためです。削除されたファイルのディスク領域は、そのファイルを参照している最後のプロセスが終了した時点で解放されます。