ld(1)

名称
ld - GNU リンカ

書式

ld  [-o output ] objfile ...
    [-A architecture ] [-b input-format ] [-Bstatic] [-Bgroup] [-Bdynamic] [-Bsymbolic] [-c commandfile ] [--cref] [-d|-dc|-dp ]
    [-defsym symbol =expression ] [--demangle] [--no-demangle] [-e entry ] [-embedded-relocs] [-E] [-export-dynamic] [-f name ] [--auxiliary name ] [-F name ] [--filter name ] [-format input-format ] [-g] [-G size ] [-h name ] [-soname name ] [--help] [-i] [-l ar ] [-L searchdir ] [-M] [-Map mapfile ] [-m emulation ] [-n|-N] [-noinhibit-exec] [-no-keep-memory] [-no-warn-mismatch] [-O level ] [--oformat output-format ] [-R filename ] [-relax] [-r|-Ur] [-rpath directory ] [-rpath-link directory ] [-S] [-s] [-shared] [-sort-common] [-split-by-reloc count ] [-split-by-file] [-T commandfile ] [--section-start sectionname =sectionorg ] [-Ttext textorg ] [-Tdata dataorg ] [-Tbss bssorg ] [-t] [-u sym ] [-V] [-v] [--verbose] [--version] [-warn-common] [-warn-constructors] [-warn-multiple-gp] [-warn-once] [-warn-section-align] [--whole-archive] [--no-whole-archive] [--wrap symbol ] [-X] [-x]

解説
ld はいくつかのオブジェクトとアーカイブファイルを結合し、 データを再配置してシンボル参照を解決します。コンパイルされた 新しいプログラムが実行可能になるように、多くの場合 最終段階として ld が呼び出されます。 ld はリンク処理を明示的かつ総合的に制御する目的の リンカコマンド言語のファイルを受け付けます。 このマニュアルページではコマンド言語についてふれません; コマンド言語の詳細と GNUリンカの別の側面からの詳細については `info ' の `ld ' の項、またはマニュアル ld: the GNU linker を参照して下さい。 このバージョンの ld はオブジェクトファイルの操作に汎用の BFD ライブラリを使います。 これによって ld は多くの異なった形式 — 例えば COFF や a.out のようなオブジェクトファイル — の読み込み、結合、書き込みが 出来るようになっています。異なる形式のファイルを、利用可能な いずれかの形式のオブジェクトファイルを生成するために一緒に リンクできます。`objdump -i ' で各種アーキテクチャでサポートされる形式の一覧を得られます; objdump(1) を参照してください。 その柔軟性の一方で、GNU リンカは診断情報の提供という点で 他のリンカよりも親切です。多くのリンカは エラーを起こした時点で即座に実行を中断してしまいます; 可能であればいつでも ld は実行を続け、他のエラーも知らせます (または、場合によっては、エラーの代わりに出力ファイルを生成します)。 GNU リンカ ld は広い範囲の各種状況をカバーすること、 そして他のリンカと可能な限り互換性を持つことを意図しています。 その結果、コマンドラインと環境変数を通して動作を制御するための 多くの選択肢を提供しています。

オプション
過度のコマンドラインオプションは恐ろしく見えるかもしれませんが、 実際にはいかなる局面においてでも使用されるオプションは少ししかありません。 例えば、ld がよく使われるのは標準の Unix の オブジェクトファイルを、標準のサポートしている Unixシステム上で リンクする場合です。そのようなシステムでは、hello.o というファイルをリンクするためには以下のようにします:

$ ld -o output /lib/crt0.o hello.o -lc

これは、output という名前のファイルを、 ファイル /lib/crt0.o と hello.o そして 標準で検索されるディレクトリから来るライブラリ libc.a をリンクした結果として生成する事を、 ld に対して指示しています。 ld へのコマンドラインオプションは 任意の順番で、何度でも繰り返してかまいません。 大抵の場合、異なる引数でオプションを繰り返すと なんの効果も無いか、または以前のオプションの指定 (コマンドラインで より左側にあるもの) を上書きします。 例外 — 2 回以上 意味を持って指定できる— は -A , -b (または その同義語の -format ), -defsym , --section-start , -L , -l , -R , -u です。 objfile として示されているひとまとめにリンクされるオブジェクトファイルの リストは、コマンドラインオプションの後に続けても、前に置いても、また 混ぜてもかまいません; 引数 objfile をオプションフラグとその引数の間に置く事は出来ないので、 これは守って下さい。 通常、リンカは少なくとも 1 つのオブジェクトファイルを指定して 起動しますが、他の形式のバイナリ入力ファイルも -l , -R を使って、そしてスクリプトコマンド言語で指定できます。 バイナリ入力ファイルがまったく 指定されない 場合は、リンカは出力ファイルを生成しません。そして `No input files ' というメッセージを出します。 オプションの引数は空白をはさまずにオプション文字に続けるか、 その引数を必要とするオプションの直後に続けて独立した引数として 与えなければなりません。

-Aarchitecture
    現在リリースされている ld では、このオプションは Intel 960 ファミリの アーキテクチャでのみ使われます。そのような設定の ld では、引数の architecture には 960 ファミリのメンバを指定する 2 文字の名称のいずれかを指定します; オプションは必要な出力のターゲットを指定して、 入力ファイル中に非互換な命令があれば警告します。 またリンカがアーカイブライブラリを検索する方式も変更します。 個々のアーキテクチャに特有なライブラリを使うようにするために、 アーキテクチャを識別する文字列をサフィックスに加えた名前を 検索ループに含めます。 例えば、ld のコマンドラインに `-ACA ' を `-ltry ' と共に指定すると、リンカは (組み込まれているサーチパスと、-L で指定されたすべてのパスについて) 以下の名前のライブラリを探します。

    try
    libtry.a
    tryca
    libtryca.a

    最初の 2 つの候補は常に検索されます; 後ろの 2 つは `-ACA ' を指定した事によるものです。 将来の ld のリリースでは他のアーキテクチャファミリでも同様の機能を サポートするかもしれません。 アーキテクチャファミリがターゲットアーキテクチャの組合せを 認めるのなら、意味を持ってコマンドライン上で 2 回以上 -A を指定することが出来ます; -l でライブラリが指定される時に、それぞれの指定による別の派生の 名前のペアが検索のために追加されます。

-b input-format
    コマンドライン上でこのオプションに続いている入力オブジェクトファイルの バイナリ形式を指定します。 通常はこれを指定する必要はありません。 それぞれのマシン上で最も一般的な形式がデフォルトの入力形式であると 期待するように、ld が設定されているからです。 input-format は文字列テキストで、BFD ライブラリでサポートされる 形式名です。 -format input-format と、スクリプトコマンド中の TARGET も同じ機能です。 ファイルを通常でないバイナリ形式とリンクする場合にこのオプションを 使いたいかも知れません。 (異なる形式のオブジェクトファイルとリンクする時に) 同様に -b で明示的に形式を切り替えられます。その場合は -b input-format を特定の形式のオブジェクトファイルの各グループの前で 指定します。 デフォルトの形式は環境変数 GNUTARGET からとられます。スクリプトから入力形式を指定する事もでき、 その場合は TARGET コマンドを使います。

-Bstatic
    共有ライブラリとリンクしません。これは共有ライブラリを サポートしているプラットフォーム上でのみ意味を持ちます。

-Bdynamic
    ダイナミックライブラリとリンクします。 これは共有ライブラリをサポートしている プラットフォームでのみ意味を持ちます。そのようなプラットフォームでは 通常このオプションがデフォルトです。

-Bgroup
    DF_1_GROUP フラグを、動的セクションの DT_FLAGS_1 エントリにセットします。 これにより、実行時リンカが行うオブジェクト内の検索と依存関係の実行が、 グループ内に限定されます。 未定義シンボルは許されません。 共有ライブラリをサポートする ELF プラットフォームでのみ意味があります。

-Bsymbolic
    共有ライブラリを作成する際に、もしあれば、グローバルシンボルへの 参照を共有ライブラリ内の定義と対応づけます。通常は 共有ライブラリとリンクされたプログラムが共有ライブラリ内の 定義を上書きする事が可能です。このオプションは 共有ライブラリをサポートする ELF のプラットフォームでのみ意味を持ちます。

-c commandfile
    ファイル commandfile からリンクコマンドを読み込むよう ld に指示します。 読み込まれたコマンドは ld のデフォルトのリンク形式を (付け加えるのではなく) 完全に置き換えます; commandfile には目的の形式を指示するために必要な物をすべて 書いておかなければなりません。 リンクコマンドのスクリプトをコマンドラインで直接 指定することも可能で、その場合はそれを文字 `{ ' と `} ' で囲んで指定します。

--cref
    クロスリファレンステーブルを出力します。リンクマップファイルが 生成されていれば、クロスリファレンステーブルがマップファイルに 出力されます。そうでない場合は標準出力に表示されます。

-d

-dc

-dp これらの 3 つのオプションは等価です; 他のリンカとの互換性のために 複数の形式がサポートされています。再配置可能なファイルを出力する ように指定された場合 (-r ) でもコモンシンボルに空間を割り当てるよう ld に指示する場合に、いずれかを使います。 スクリプト中での FORCE_COMMON_ALLOCATION コマンドも同じ効果を持ちます。

-defsym symbol=expression
    出力ファイル中に expression で与えられた絶対アドレスを持つグローバルシンボルを生成します。 複数のシンボルを定義するためにコマンドラインで必要回数だけ このオプションを指定してかまいません。この文脈では 限定されますが expression として式を使う事ができます: 16 進定数や定義済シンボル、 または + と - で 16 進定数や定義済シンボルの加減算を行えます。 より手の込んだ式が必要であれば、スクリプトから リンカコマンド言語を使う事を検討してください。

--demangle

--no-demangle
    このオプションは、 エラーメッセージや他の出力において、 シンボル名を元に戻す (demangle する) か否かを制御します。 リンカが元に戻すように指示された場合、シンボル名を可読形式にしようとします。 すなわち、 オブジェクトファイルが使用しているならば先頭のアンダスコアを削除し、 C++ で変換されたシンボル名をユーザが可読な名前に変換します。 リンカは、デフォルトでは元に戻す動作を行いますが、環境変数 COLLECT_NO_DEMANGLE が設定されている場合は例外です。 これらのオプションを使用してデフォルトを上書き可能です。

-e entry
    プログラムの実行開始番地を示す明示的なシンボルとして、 デフォルトの開始番地の代わりに entry を使用します。 デフォルトと開始番地指定の他の方法については info の ld の項を参照してください。

-embedded-relocs
    このオプションは、 -membedded-pic オプションを GNU コンパイラとアセンブラに指定して生成した MIPS 組み込み用位置独立コードをリンクする場合にのみ意味を持ちます。 これによってリンカは、ポインタ値に初期化されている静的変数を 実行時に再配置するために利用できるテーブルを生成するようになります。 詳しくは testsuite/ld-empic にあるコードを参照してください。

-E

-export-dynamic
    ELF ファイルを生成する際に、すべてのシンボルを実行時シンボルテーブルに 加えます。通常、実行時シンボルテーブルは実行時オブジェクトが 使用するシンボルだけを含みます。このオプションは dlopen を使用する場合に必要です。

-f name

--auxiliary name
    ELF の共有オブジェクトを生成する際に、内部の DT_AUXILIARY フィールドを 指定した name にセットします。これは、 共有オブジェクトのシンボルテーブルを、 共有オブジェクト name のシンボルテーブルに適用する補助のフィルタとして使う事を、 実行時リンカに対して指示します。

-F name

--filter name
    ELF の共有オブジェクトを生成する際に、内部の DT_FILTER フィールドを 指定した name にセットします。これは、 共有オブジェクトのシンボルテーブルを、 共有オブジェクト name のシンボルテーブルに適用するフィルタとして使う事を、 実行時リンカに対して指示します。

-format input-format
    -b input-format と同意です。

-g  受け付けますが、無視されます; 他のツールとの互換性のために提供されています。

-G size
    MIPS ECOFF において GP レジスタを使って最適化されるオブジェクトの 最大サイズを size にします。他のオブジェクトファイル形式では無視されます。

-h name

-soname name
    ELF の共有オブジェクトを生成する際に、内部の DT_SONAME フィールドを 指定した name にセットします。実行形式が DT_SONAME フィールドを持つ 共有オブジェクトとリンクされると、実行形式が実行される時に、 実行時リンカはリンカに与えられたファイル名を使う代わりに DT_SONAME フィールドで指定された共有オブジェクトをロードしようとします。

--help
    コマンドラインオプションのサマリを標準出力に表示して終了します。 このオプションと、1 つではなく 2 つのダッシュで始まる --version は他の GNUプログラムとの互換性のためのものです。 1 つだけのダッシュで始まる他のオプションは他のリンカとの互換性のための ものです。

-i  インクリメンタルリンクを行います (-r オプションと同じです)。

-lar
    アーカイブファイル ar をリンクするファイルのリストに加えます。このオプションは 何度でも指定できます。ld は、指定された各 ar について lib ar .aを自己のパスリストから探します。

-Lsearchdir
    このコマンドはパス searchdir を、 ld がアーカイブライブラリを探すパスのリストに追加します。 このオプションは何度でも指定して構いません。 デフォルトで (-L で指定されずに) 探すパスの組は ld がどのエミュレーションモードを使っているか、そして 場合によってはどうコンフィギュレーションされているか、 に依存します。パスはリンクスクリプトの中でも SEARCH_DIR コマンドを使って指定できます。

-M  リンクマップ — ld によってシンボルがどこに配置されたかの診断情報、そして グローバルなコモン領域の配置情報 — を (標準出力ファイルへ) 出力します。

-Map mapfile
    ファイル mapfile にリンクマップ — ld によってシンボルがどこに配置されたかの診断情報、そして グローバルなコモン領域の配置情報 — を出力します。

-m emulation
    emulation で指定されたリンカをエミュレートします。 emulation として指定できる物は --verbose か -V オプションでリストできます。このオプションは、 ld をコンパイルする際にコンフィギュレーションでデフォルトとして指定して 埋め込まれている目的システムに優先します。

-N  text と data セクションを読み書き可能にする指定です。 出力形式が Unix スタイルのマジックナンバをサポートしているなら、 出力は OMAGIC とマークされます。 `-N ' オプションを指定した場合は、リンカは データセグメントをページ境界に合わせることをしません。

-n  テキストセグメントを読み込み専用にします。そして可能であれば NMAGIC が書き込まれます。

-noinhibit-exec
    通常、リンカはリンク処理中にエラーがあった場合は出力ファイルを生成しません。 このフラグを指定すると、致命的ではないエラーの後であっても 出力ファイルを残しておく事を望んでいる事を指示できます。

-no-keep-memory
    通常、リンカは速度面での最適化を、 入力ファイルのシンボルテーブルをメモリ中にキャッシュすることでの メモリ使用量の増大よりも優先します。このオプションで、 そうではなく必要に応じてシンボルを再読み込みする事でメモリ使用量を 最適化する事を指示できます。大きな実行ファイルをリンクしている際に メモリ領域を使いきってしまうような場合に、このオプションが 必要になるかもしれません。

-no-warn-mismatch
    通常、何らかの理由でマッチしない入力ファイル同士をリンクしようとすると、 リンカはエラーを起こします。 おそらくは、異なる プロセッサ用か異なるエンディアン向けにコンパイルされたことが原因でしょう。 このオプションは、そのような起こり得るエラーを黙って許容するよう、 リンカに対して指示します。このオプションは、リンカが エラーとする事が不適切と確証を持てる特別な処理を行う場合にのみ 注意深く使うべきです。

-o output
    output が ld の生成するプログラム名です; このオプションが 指定されていない場合は、デフォルトの名前 `a.out ' が使われます。 スクリプトのコマンド OUTPUT でも出力ファイル名を指定できます。

-Olevel
    最適化した出力ファイルを生成します。 非常に長い時間がかかるかもしれませんので、 最終的なバイナリを生成するときのみ有効にすべきかもしれません。 level は数値であるものとして扱われます。 0 より大きな値は最適化を有効にします。

--oformat output-format
    出力オブジェクトファイルのバイナリ形式を指定します。ld はデフォルトの出力形式としてそれぞれのマシンで最も一般的な形式を 生成するようにコンフィギュレーションされているので、 通常はこれを指定する必要はありません。output-format は文字列テキストで、BFD ライブラリでサポートされる 形式名で指定します。スクリプトでのコマンド OUTPUT_FORMAT でも出力形式を指定できますが、このオプションはそれより優先されます。

-R filename
    シンボル名とそのアドレスを filename から読み込みますが、それを再配置したり出力に 含めたりはしません。これによって、 他のプログラムが定義しているメモリ中の絶対番地を、 出力するファイルからシンボルで参照することが可能になります。

-relax
    マシン固有の効果を持つオプションです。現在はこのオプションは H8/300 でのみサポートされます。 プラットフォームによっては、このオプションでリンカがプログラム中の アドレッシングを解決する時にアドレスモードを緩めて、出力ファイルに 新しい命令を生成する広域最適化を行う事が可能になります。 これがサポートされないプラットフォームでは、 `-relax ' は受け付けますが影響はありません。

-r  再配置可能な出力を生成します — つまり、再度 ld に入力として与えられる出力ファイルを生成します。 これはしばしば 部分的な リンクと呼ばれます。副作用として、標準的な Unix のマジックナンバを サポートする環境では、このオプションは同時に出力ファイルの マジックナンバを OMAGIC にします。 このオプションが指定されないと、絶対ファイルが生成されます。 C++ のプログラムをリンクしている時は、このオプションでは コンストラクタへの参照は解決 されません ; 代わりに -Ur を使ってください。 このオプションは -i と同じ事をします。

-rpath directory
    実行時のライブラリ検索パスにディレクトリを追加します。これは ELF 実行形式を共有オブジェクトとリンクする時に使われます。 すべての -rpath 引数がつながれて、実行時リンカに渡されます。実行時リンカは それらを使って共有オブジェクトの位置を実行時に突き止めます。 -rpath オプションは、リンク時に明示的に含められた共有オブジェクトが 必要とする共有オブジェクトの位置を突き止めるためにも使われます; -rpath-link オプションの説明を参照してください。もし ELF 実行形式をリンクする時に -rpath が使われないと、定義されていれば環境変数 LD_RUN_PATH の内容が使われます。 -rpath リンカは与えられたすべての -L オプションを含む実行時の検索パスを生成します。 もし -rpath が指定されれば、実行時の検索パスは -rpath オプションを使い、 -L オプションは無視して排他的に形成されます。 このことは gcc を使う時に有効でしょう。 gcc は多くの -L オプションを付け、それらは NFSマウントされたファイルシステムに あるかもしれないからです。

-rpath-link directory
    ELF か SunOS で使う時に、1 つの共有ライブラリが他の共有ライブラリを 必要とするかも知れません。これは ld -shared によるリンクで入力ファイルの 1 つとして共有ライブラリが含まれる 場合に発生します。 リンカがそのような依存関係に出会った時、非共有、再配置不可能の リンクをしている時は、もし必要な共有ライブラリが明示的には含まれて いないのなら、自動的にその位置を突き止めてリンク作業に 含めようとします。そのような場合、 -rpath-link オプションで最初に検索するディレクトリのセットを指定できます。 -rpath-link オプションは、コロンで区切って名前をリストにするか 複数回指定する事でディレクトリ名の並びを指定できます。 必要な共有ライブラリが見付からないと、リンカは 警告を出力してリンク作業を継続します。

-S  (すべてのシンボルではなく) デバッガシンボル情報だけを、 出力ファイルに出しません。

-s  すべてのシンボル情報を出力ファイルに出しません。

-shared
    共有ライブラリを作成します。これは現時点では ELF と SunOS のプラットフォームでのみサポートされます (SunOS では指定しなくても構いません。リンカは未定義シンボルが あって -e オプションが指定されていなければ自動的に共有ライブラリを作成します)。

-sort-common
    通常、 ld がグローバルのコモンシンボルを適切な出力セクションに置く時、 それらをサイズ順に並べます。最初にすべての 1 バイトのシンボルが来て、 すべての 2 バイト、それからすべての 4 バイト、そしてそれら以外の 順になります。これはアラインメントの制約によるシンボル間のすき間を 避けるために行われます。このオプションでは、その並べ替えを抑止します。

-split-by-reloc count
    count 個より多くの再配置を含む出力セクションが 1 つもできないように、 出力ファイルに追加のセクションを作る事を試みます。 これは、ある種のリアルタイムカーネルに、COFF オブジェクト形式で ダウンロードするための巨大な再配置可能ファイルを生成する時に有用です; COFF では 1 つのセクションで 65535 個より多い再配置情報を持てないからです。 これは任意のセクションをサポートしないオブジェクトファイル形式では うまく動作しない事に注意してください。リンカは個々の入力の セクションを再分配のために切り分ける事はありません。このため、もし 1 つの入力セクションが count より多い再配置を含んでいると、1 つの出力セクションがその数の 再配置を含む事になります。

-split-by-file
    -split-by-reloc と同様ですが、入力ファイル毎に新しい出力セクションを生成します。

--section-start sectionname=org
    出力ファイル中のセクションの絶対アドレスを org で指定します。 org は 16 進整数であることが必要です。 複数セクションの位置を指定するために、複数回コマンドラインで指定可能です。 手の込んだ式を使う必要がある場合、 スクリプトからリンカコマンド言語を使用することを検討してください。

-Tbss org

-Tdata org

-Ttext org
    出力ファイルの bss , data , text セグメントの開始番地を—それぞれ— org にします。 org は 16 進整数でなければなりません。

-T commandfile
    -c commandfile と等価です; 他のツールとの互換性のためにサポートされています。

-t  ld が処理している入力ファイル名を出力します。

-u sym
    強制的に sym が未定義シンボルとして出力ファイルに入るようにします。 これは、例えば、標準ライブラリから追加のモジュールをリンクする 引金となり得ます。 さらに未定義シンボルを追加するために -u を 異なるオプション引数で繰り返し可能です。

-Ur C++ プログラム以外の物については、このオプションは -r と等価です: 再配置可能な出力 — つまり、再度 ld に入力として与えられる出力ファイル — を生成します。 C++ プログラムをリンクする時は、-r と異なり -Ur はコンストラクタの参照を解決 します 。

--verbose
    ld のバージョン番号とサポートするエミュレーションのリストを表示します。 どの入力ファイルが開けた/開けなかったかを表示します。

-v, -V
    ld のバージョン番号を表示します。 -V オプションではサポートするエミュレーションのリストも表示します。

--version
    ld のバージョン番号を表示して終了します。

-warn-common
    コモンシンボルが他のコモンシンボルかシンボル定義と結合された時に 警告します。Unix のリンカはこのややずさんな慣習を許しますが、 他のいくつかのオペレーティングシステムのリンカは許しません。 このオプションでグローバルシンボルの結合による問題の可能性を 見つけることができます。

-warn-constructors
    グローバルコンストラクタの使用を警告します。これは 2、3 の オブジェクトファイル形式でのみ有用です。COFF や ELF といった 形式については、リンカはグローバルコンストラクタの使用を 検出できません。

-warn-multiple-gp
    出力ファイルが複数のグローバルポインタ値を必要とする場合に警告します。 このオプションはある種のプロセッサ、Alpha などでのみ意味を持ちます。

-warn-once
    未定義シンボルのそれぞれについて、それを参照するモジュール毎でなく、 1 回だけ警告します。

-warn-section-align
    出力セクションのアドレスがアラインメントのために変更されると警告します。 典型的には、アラインメントは入力セクションによってセットされます。 アドレスはアラインメントが明示的に指定されなかった場合にのみ変更されます; つまり SECTIONS コマンドがセクションの開始番地を指定しなかった場合です。

--whole-archive
    コマンドライン上で --whole-archive オプションの後に指定された各アーカイブについて、 必要なオブジェクトファイルをアーカイブから探す代わりに、 アーカイブ中の全オブジェクトファイルをリンクします。 これは通常、アーカイブファイルを共有ライブラリにするのに使い、 作成する共有ライブラリに全オブジェクトが確実に入るようにします。

--no-whole-archive
    これ以降にコマンドライン上で指定されたアーカイブについて --whole-archive オプションの効果を無効にします。

--wrap symbol
    symbol についてラッパー関数を使います。 未解決の symbol への参照を __wrap_symbol で解決します。 未解決の __real_symbol への参照を symbol で解決します。

-X  テンポラリのローカルシンボルをすべて削除します。大部分のターゲットでは、 これは名前が `L ' で始まるすべてのローカルシンボルになります。

-x  すべてのローカルシンボルを削除します。

環境変数
環境変数 GNUTARGET で ld の動作を変えることが出来ます。 -b (またはその同義語の -format ) を使わない場合に GNUTARGET で入力ファイルオブジェクト形式が決まります。その値は入力形式を示す BFD 名でなければなりません。 環境変数に GNUTARGET が無ければ、ld はホストの自然な形式を 使います。もしGNUTARGET が default にセットされていればBFD はバイナリ入力ファイルを調べることで入力形式を 見つけようとします; このやりかたは多くの場合に成功しますが、 あいまいになる可能性があります。オブジェクトファイル形式の 印として使われているマジックナンバが重複していない事を 確認する方法が存在しないからです。しかしながら、各システムでの BFD のコンフィギュレーション処理で、そのシステムで慣習的に 使われる形式を検索リストの最初に置きます。よってあいまいさは 慣習に合わせる事で解決されます。

関連項目
objdump(1)
info の `ld' と `binutils' の項
ld: the GNU linker, Steve Chamberlain and Roland Pesch; The GNU Binary Utilities, Roland H. Pesch

COPYING

This document is distributed under the terms of the GNU Free Documentation License, version 1.1. That license is described in the sources for this manual page, but it is not displayed here in order to make this manual more consise. Copies of this license can also be obtained from: http://www.gnu.org/copyleft/.

日本語訳
野首 寛高(hnokubi@yyy.or.jp): FreeBSD 用に翻訳