名 ld - LDを使用すると、GNUリンカ シノプシス ld オプション objfile … DESCRIPTION ld いくつかのオブジェクトファイルとアーカイブファイルを結合し、それらのデータを再配置し、シンボル参照を関連付けます。通常、プログラムをコンパイルする最後のステップは、実行することですld. ld AT&Tのリンクエディタコマンド言語構文のスーパーセットで書かれたリンカコマンド言語ファイルを受け入れ、リンクプロセスを明白かつ完全に制御する。 このマニュアルページにはコマンド言語は記載されていません。のld コマンド言語やGNUリンカの他の側面についての詳細は、 "info"の項目、またはマニュアルld:GNUリンカを参照してください。 このバージョンのld 汎用BFDライブラリを使用してオブジェクトファイルを操作します。これにより、ld 例えば、COFFや "a.out"のような多くの異なるフォーマットでオブジェクトファイルを読み込み、結合して書き込むことができます。利用可能な種類のオブジェクトファイルを生成するために、異なるフォーマットを互いにリンクすることができる。 その柔軟性とは別に、GNUリンカーは診断情報を提供する際に他のリンカーよりも役立ちます。多くのリンカは、エラーが発生したときにすぐに実行を中止します。いつでも可能なとき、ld 他のエラーを特定することができます(または、場合によってはエラーにもかかわらず出力ファイルを取得することができます)。 GNUリンカld 広範囲の状況をカバーし、他のリンカーと可能な限り互換性があるように意図されています。結果として、その動作を制御する多くの選択肢があります。 オプション リンカは多くのコマンドラインオプションをサポートしていますが、実際には特定の状況で使用されるものはほとんどありません。例えば、頻繁に使用するld 標準のサポートされているUnixシステム上で、標準のUnixオブジェクトファイルをリンクすることです。このようなシステムでは、ファイル "hello.o"をリンクするには: します /lib/crt0.o hello.o -lcこれはld と呼ばれるファイルを生成する 出力 ファイル "/lib/crt0.o"と "hello.o"とライブラリ "libc.a"をリンクした結果、標準検索ディレクトリから来ます。 (-l 以下のオプションを参照してください)。 コマンドラインオプションのいくつかはld コマンドラインの任意のポイントで指定することができます。ただし、ファイルを参照するオプション-l または-Tオブジェクトファイルやその他のファイルオプションを基準にして、オプションがコマンドラインに表示された時点でファイルを読み込みます。別の引数を指定してファイル以外のオプションを繰り返すことは、それ以上の効果を持たないか、そのオプションの前のオカレンス(コマンドラインの左側にあるもの)を上書きします。以下の説明では、2回以上意味のあるオプションを指定している場合があります。 非オプション引数は、リンクされるオブジェクトファイルまたはアーカイブです。それらはオプションと引数の間にオブジェクトファイルの引数を置くことができないという点を除いて、コマンドラインオプションに従うか、先行するか、または混在させることができます。 通常、リンカは少なくとも1つのオブジェクトファイルで呼び出されますが、他の形式のバイナリ入力ファイルを指定することもできます-l, -R、およびスクリプトコマンド言語が含まれます。もし いいえ バイナリ入力ファイルはすべて指定され、リンカは出力を生成せず、メッセージを発行します入力ファイルがありません. リンカがオブジェクトファイルの形式を認識できない場合、リンカスクリプトであるとみなされます。この方法で指定されたスクリプトは、リンクに使用されているメインリンカースクリプト(デフォルトのリンカースクリプトか、-T)。この機能により、リンカはオブジェクトやアーカイブのように見えるファイルとリンクすることができますが、実際にはシンボル値を定義するだけで、 "INPUT"や "GROUP"を使用して他のオブジェクトをロードします。この方法でスクリプトを指定すると、主リンカースクリプトが増やされるだけであることに注意してください。使用-T デフォルトリンカースクリプトを完全に置き換えるオプション。 名前が単一の文字であるオプションの場合、オプション引数は、空白を介さずにオプション文字の後に付けるか、またはそれらを必要とするオプションの直後に別々の引数として指定する必要があります。 名前が複数の文字であるオプションの場合、オプション名の前に1つまたは2つの名前を付けることができます。例えば、-trace-symbol そして--trace-symbol 同等です。注 - このルールには1つの例外があります。小文字の「o」で始まる複数の文字オプションの前には、2つのダッシュを付けることができます。これは、-o オプション。したがって、例えば〜の 出力ファイル名をに設定します。魔法 一方、オマージュ 出力にNMAGICフラグを設定します。 複数文字オプションへの引数は、オプション名と等号で区切られていなければなりません。また、オプション名の直後に別の引数として指定する必要があります。例えば、--trace-symbol foo そして--trace-symbol = foo 同等です。複数の文字のオプションの名前の一意の略語が受け入れられます。 注 - リンカがコンパイラドライバを介して間接的に呼び出されている場合(例:gcc)、すべてのリンカーコマンドラインオプションの前に-Wl、 (または特定のコンパイラドライバに適したもの)を次のように記述します。 gcc -Wl、 - startgroup foo.o bar.o -Wl、 - endgroupこれは重要です。そうしないと、コンパイラドライバプログラムがリンカオプションを静かにドロップし、リンクが不正になる可能性があるからです。 GNUリンカによって受け入れられる一般的なコマンドラインスイッチの表は次のとおりです。 -a キーワード このオプションは、HP / UXとの互換性のためにサポートされています。ザ キーワード 引数は文字列の1つでなければならないアーカイブ, 共有、またはデフォルト. 〜保存的 機能的には-Bstatic、他の2つのキーワードは機能的に同等です - 力学。このオプションは任意の回数使用できます。 -A 建築 --architecture = 建築 現在のリリースではldこのオプションは、Intel 960ファミリのアーキテクチャでのみ有効です。その中でld 構成、 建築 引数は、960ファミリの特定のアーキテクチャを識別し、いくつかの保護手段を有効にし、アーカイブライブラリの検索パスを変更します。 今後のリリース予定ld 他のアーキテクチャファミリにも同様の機能をサポートする可能性があります。 -b 入力形式 --format = 入力形式 ld 2種類以上のオブジェクトファイルをサポートするように構成することができます。もしあなたのld このように設定されている場合は、-b オプションを使用して、このオプションの後に続く入力オブジェクトファイルのバイナリ形式をコマンドラインで指定します。ときでさえld 代替オブジェクト形式をサポートするように設定されている場合、通常はこれを指定する必要はありません。ld 各マシンで最も普通のフォーマットをデフォルトの入力フォーマットとして使用するように構成する必要があります。 入力形式 はテキスト文字列で、BFDライブラリでサポートされている特定の形式の名前です。 (利用可能なバイナリフォーマットは、objdump -i.) このオプションは、ファイルを通常と異なるバイナリ形式でリンクする場合に使用します。あなたも使用することができます-b 異なるフォーマットのオブジェクトファイルをリンクするときに明示的にフォーマットを切り替えるには、-b 入力形式 オブジェクトファイルの各グループの前に特定の形式で格納します。 デフォルトの形式は、環境変数 "GNUTARGET"から取得されます。 コマンド "TARGET"を使用して、スクリプトから入力フォーマットを定義することもできます。 -c MRIコマンドファイル --mri-script = MRIコマンドファイル MRIによって産生されるリンカーとの適合性のために、ld GNU ldのドキュメンテーションのMRI Compatible Script Filesセクションで説明されている、代替の制限付きコマンド言語で書かれたスクリプトファイルを受け入れます。 MRIスクリプトファイルをオプションで導入する-c;使用-T 汎用で書かれたリンカスクリプトを実行するオプションld スクリプト言語。もし MRI-cmdfile 存在しない、ldanyで指定されたディレクトリでそれを探します-L オプション。 -d -dc -dp これら3つのオプションは同等です。他のリンカーとの互換性のために複数のフォームがサポートされています。再配置可能な出力ファイルが指定されていても、共通シンボルにスペースを割り当てます(-r)。スクリプトコマンド "FORCE_COMMON_ALLOCATION"は同じ効果を持ちます。 -e エントリ --entry = エントリ つかいます エントリ デフォルトのエントリポイントではなく、プログラムの実行を開始するための明示的なシンボルとして使用します。名前の付いたシンボルがない場合 エントリ 、リンカは解析しようとします エントリ 番号として入力し、それをエントリアドレスとして使用します(番号は基数10で解釈されます。0x ベース16用、またはリーディング0 ベース8)。 -E --export-dynamic 動的にリンクされた実行可能ファイルを作成するときは、すべてのシンボルを動的シンボルテーブルに追加します。動的シンボルテーブルは、実行時に動的オブジェクトから見えるシンボルのセットです。 このオプションを使用しないと、ダイナミックシンボルテーブルには通常、リンクに記述されているいくつかのダイナミックオブジェクトによって参照されるシンボルのみが含まれます。 "dlopen"を使用して動的オブジェクトをロードする場合、他の動的オブジェクトではなくプログラムによって定義されたシンボルを参照する必要がある場合は、プログラム自体をリンクするときにこのオプションを使用する必要があります。 バージョンスクリプトを使用して、出力フォーマットがサポートしている場合は、動的シンボルテーブルに追加するシンボルを制御することもできます。の説明を参照してください--version-script @ ref {VERSION}にあります。 -EB ビッグエンディアンオブジェクトをリンクします。これは、デフォルトの出力形式に影響します。 -EL リトルエンディアンオブジェクトをリンクします。これは、デフォルトの出力形式に影響します。 -f - 補助 名 ELF共有オブジェクトを作成するときは、内部DT_AUXILIARYフィールドを指定された名前に設定します。これは、共有オブジェクトのシンボルテーブルが共有オブジェクトのシンボルテーブルの補助フィルタとして使用されるべきであることを動的リンカに伝えます 名 . 後でプログラムをこのフィルタオブジェクトにリンクすると、プログラムを実行すると、ダイナミックリンカにDT_AUXILIARYフィールドが表示されます。ダイナミックリンカーがフィルタオブジェクトからのシンボルを解決すると、まず共有オブジェクトに定義があるかどうかをチェックします 名 。存在する場合、フィルタオブジェクト内の定義の代わりに使用されます。共有オブジェクト 名 存在する必要はない。したがって、共有オブジェクト 名 おそらくデバッグまたはマシン特有の性能のために、特定の機能の別の実装を提供するために使用されてもよい。 このオプションは複数回指定できます。 DT_AUXILIARYエントリは、コマンドラインで表示される順序で作成されます。 -F 名 - フィルタ 名 ELF共有オブジェクトを作成するときは、内部DT_FILTERフィールドを指定された名前に設定します。これは、作成中の共有オブジェクトのシンボルテーブルを共有オブジェクトのシンボルテーブルのフィルタとして使用する必要があることを動的リンカに通知します 名 . 後でプログラムをこのフィルタオブジェクトにリンクすると、プログラムを実行すると、ダイナミックリンカにDT_FILTERフィールドが表示されます。ダイナミックリンカは、通常どおりフィルタオブジェクトのシンボルテーブルに従ってシンボルを解決しますが、実際には共有オブジェクトにある定義にリンクします 名 。したがって、フィルタオブジェクトは、オブジェクトによって提供されるシンボルのサブセットを選択するために使用することができる 名 . 古いリンカーの中には、-F コンパイルツールチェイン全体で、入力と出力の両方のオブジェクトファイルのオブジェクトファイル形式を指定するオプション。 GNUリンカは、この目的のために他のメカニズムを使用します。-b, - フォーマット, --oformat リンカスクリプトの "TARGET"コマンド、および "GNUTARGET"環境変数が含まれています。 GNUリンカは、-F ELF共有オブジェクトを作成しない場合のオプション。 -fini 名 ELF実行可能ファイルまたは共有オブジェクトを作成するときは、関数のアドレスにDT_FINIを設定して、実行可能ファイルまたは共有オブジェクトがアンロードされたときにNAMEを呼び出します。デフォルトでは、リンカは "_fini"を呼び出し関数として使用します。 -g 無視されます。他のツールとの互換性のために提供されています。 -G 値 --gpsize = 値 GPレジスタを使用して最適化するオブジェクトの最大サイズを サイズ 。これは、大小のオブジェクトを異なるセクションに入れることをサポートするMIPS ECOFFなどのオブジェクトファイル形式でのみ意味があります。他のオブジェクトファイル形式では無視されます。 -h 名 -soname = 名 ELF共有オブジェクトを作成するときは、内部DT_SONAMEフィールドを指定された名前に設定します。実行可能ファイルがDT_SONAMEフィールドを持つ共有オブジェクトにリンクされている場合、実行可能ファイルが実行されると、ダイナミックリンカは、リンカに与えられたファイル名を使用するのではなく、DT_SONAMEフィールドで指定された共有オブジェクトをロードしようとします。 -私 増分リンクを実行する(オプションと同じ-r). -その中に 名 ELF実行可能ファイルまたは共有オブジェクトを作成するときは、DT_INITに関数のアドレスを設定して、実行可能ファイルまたは共有オブジェクトがロードされたときにNAMEを呼び出します。デフォルトでは、リンカは "_init"を呼び出し関数として使用します。 -l アーカイブ --library = アーカイブ アーカイブファイルを追加する アーカイブ リンクするファイルのリストに追加します。このオプションは任意の回数使用できます。ld そのパスリストで "libarchive.a"の出現をすべて検索します アーカイブ 指定された。 共有ライブラリをサポートするシステムでは、ld ".a"以外の拡張子を持つライブラリを検索することもできます。具体的には、ELFおよびSunOSシステムでは、ld 拡張子が「.a」の拡張子を持つライブラリを検索する前に、拡張子が「.so」のライブラリをディレクトリで検索します。規約上、 ".so"拡張子は共有ライブラリを示します。 リンカーは、コマンドラインで指定された場所でアーカイブを1回だけ検索します。アーカイブが、コマンドラインでアーカイブの前に現れたオブジェクトの中で未定義のシンボルを定義している場合、リンカはアーカイブから適切なファイルをインクルードします。ただし、コマンド行の後に表示されるオブジェクトの未定義のシンボルによって、リンカーはアーカイブを再度検索することはありません。 を参照してください-( リンカーが複数回アーカイブを検索するようにするためのオプション。 同じアーカイブをコマンドラインで複数回リストすることができます。 このタイプのアーカイブ検索は、Unixリンカの標準です。ただし、使用している場合ld onAIXは、AIXリンカーの動作とは異なることに注意してください。 -L searchdir --library-path = searchdir パスを追加 searchdir そのパスのリストにld アーカイブライブラリを検索し、ld 制御スクリプト。このオプションは任意の回数使用できます。ディレクトリーは、コマンド行で指定された順序で検索されます。コマンドラインで指定されたディレクトリは、デフォルトディレクトリの前に検索されます。すべて-L オプションはすべてに適用されます-l オプションの順序にかかわらず、オプションが表示されます。 もし searchdir "="で始まり、 "="は sysroot接頭辞 リンカーが構成されているときに指定されたパス。 検索されるデフォルトのパスセット(-L)はどのエミュレーションモードに依存するかld いくつかのケースではどのように構成されているかについても説明します。 これらのパスは、リンクスクリプト内で "SEARCH_DIR"コマンドで指定することもできます。この方法で指定されたディレクトリは、リンカスクリプトがコマンドラインに現れる場所で検索されます。 -m エミュレーション エミュレートする エミュレーション リンカ。使用可能なエミュレーションは、 - 詳細 または-Vオプション。 もし-m オプションが使用されていない場合、エミュレーションは定義されている場合は、 "LDEMULATION"環境変数から取得されます。 それ以外の場合、デフォルトのエミュレーションはリンカーの設定方法によって異なります。 -M --print-map リンクマップを標準出力に出力します。リンクマップは、次のようなリンクに関する情報を提供します。 * オブジェクトファイルとシンボルがメモリにマップされる場所。 * 共通シンボルの割り当て方法。 * リンクに含まれるすべてのアーカイブメンバー。アーカイブメンバーの持ち込みにつながったシンボルの言及。 -n --nmagic 可能であれば、セクションのページアラインメントをオフにし、出力を「NMAGIC」とマークします。 -N オマージュ テキストセクションとデータセクションを読み書き可能に設定します。また、データ・セグメントをページ・アラインしたり、共有ライブラリーとのリンクを使用不可にしたりしないでください。出力フォーマットがUnixスタイルのマジックナンバーをサポートしている場合は、出力を「OMAGIC」とマークします。 - no-omagic このオプションは、-N オプション。これは、テキストセクションを読み取り専用に設定し、データセグメントを強制的にページに揃えるようにします。注 - このオプションは共有ライブラリとのリンクを有効にしません。つかいます - 力学 このため。 -o 出力 --output = 出力 つかいます 出力 によって作成されたプログラムの名前としてld;このオプションが指定されていない場合、名前 a.out デフォルトで使用されます。スクリプトコマンド "OUTPUT"は、出力ファイル名を指定することもできます。 -O レベル もし レベル 0より大きい数値ですld 出力を最適化します。これにはかなりの時間がかかるため、最終的なバイナリに対してのみ有効にしてください。 -q --emit-relocs 再配置セクションとコンテンツを完全にリンクされたexececutablesにしておきます。実行可能ファイルの正しい変更を実行するために、リンク解析および最適化ツールにこの情報が必要な場合があります。その結果、実行可能ファイルが大きくなります。 このオプションは現在、ELFプラットフォームでのみサポートされています。 -r - relocateable 再配置可能な出力を生成します。つまり、出力ファイルを生成します。ld。これはしばしば 部分的リンク 。副作用として、標準のUnixマジックナンバーをサポートする環境では、このオプションは出力ファイルのマジックナンバーを "OMAGIC"に設定します。このオプションを指定しないと、絶対ファイルが生成されます。 C ++プログラムをリンクするとき、このオプション しない コンストラクタへの参照を解決する。それを行うには、〜. 入力ファイルが出力ファイルと同じ形式でない場合、部分的なリンクは、その入力ファイルに再配置が含まれていない場合にのみサポートされます。異なる出力形式にはさらに制限があります。例えば、いくつかの "a.out"ベースのフォーマットは、他のフォーマットの入力ファイルとの部分的なリンクをまったくサポートしていません。 このオプションは、-私. -R ファイル名 --just-symbols = ファイル名 からシンボル名とそのアドレスを読む ファイル名 しかし、それを再配置したり、出力に含めたりしないでください。これにより、出力ファイルは、他のプログラムで定義されているメモリの絶対的な位置を記号的に参照することができます。このオプションを複数回使用することができます。 他のELFリンカーとの互換性のために、-R オプションの後ろに、ファイル名ではなくディレクトリ名が続きます。-rpath オプション。 -s --strip-all 出力ファイルからすべてのシンボル情報を省略します。 -S --strip-debug デバッガのシンボル情報(ただしすべてのシンボルではありません)を出力ファイルから省略します。 -t - トレース 入力ファイルの名前をld それらを処理する。 -T スクリプトファイル --script = スクリプトファイル つかいます スクリプトファイル リンカースクリプトとして。このスクリプトは、ldのデフォルトのリンカスクリプト(それに追加するのではなく) コマンドファイル 出力ファイルを記述するために必要なすべてを指定する必要があります。もし スクリプトファイル 現在のディレクトリに存在しない場合、 "ld"は前のいずれかで指定されたディレクトリ-L オプション。複数-T オプションが累積されます。 -u シンボル --undefined = シンボル 力 シンボル 出力ファイルに未定義のシンボルとして入力されます。これを行うと、例えば、標準ライブラリから追加のモジュールをリンクすることができます。-u 追加の未定義シンボルを入力するために、異なるオプション引数を使用して繰り返すことができます。このオプションは、 "EXTERN"リンカースクリプトコマンドと同等です。 〜 C ++プログラム以外では、このオプションは-r:再配置可能な出力、すなわち出力ファイルを生成します。出力ファイルは、ld。 C ++プログラムをリンクするとき、〜 する それとは異なり、コンストラクタへの参照を解決する-r。それは使用するのにはうまくいかない〜 それ自体でリンクされたファイル〜;いったんコンストラクタテーブルが構築されると、それを追加することはできません。つかいます〜 最後の部分的リンクについてのみ-r 他の人のために。 - ユニーク= セクション 入力セクションに一致する別々の出力セクションを作成します。 セクション 、またはオプションのワイルドカード セクション すべての孤立した入力セクションに対して、引数がありません。孤立したセクションは、リンカースクリプトで特に言及されていないセクションです。コマンドラインでこのオプションを複数回使用することもできます。リンカースクリプトの出力セクションの割り当てを無効にして、同じ名前の入力セクションの通常のマージを防止します。 -v - バージョン -V のバージョン番号を表示するld。ザ-V オプションでは、サポートされているエミュレーションも表示されます。 -バツ --discard-all すべてのローカルシンボルを削除します。 -バツ --discard-locals すべての一時的なローカルシンボルを削除します。ほとんどのターゲットでは、これはすべてローカルシンボルで、その名前はで始まりますL. -y シンボル --trace-symbol = シンボル リンクされた各ファイルの名前を表示します。 シンボル 表示されます。このオプションは任意の回数指定できます。多くのシステムでは、アンダースコアを前に付ける必要があります。 このオプションは、あなたのリンクに未定義のシンボルがあり、その参照がどこから来ているのかわからないときに便利です。 -Y パス 追加 パス デフォルトのライブラリ検索パスに移動します。このオプションは、Solarisとの互換性のために存在します。 -z キーワード 認識されたキーワードは、「initfirst」、「interpose」、「loadfltr」、「nodefaultlib」、「nodelete」、「nodlopen」、「nodump」、「now」、「origin」、「combreloc」、「nocombreloc」および「nocopyreloc」 " Solarisの互換性のために、他のキーワードは無視されます。 "initfirst"は、実行時に他のオブジェクトの前に最初に初期化されるオブジェクトをマークします。"interpose"は、シンボルテーブルが介在するオブジェクトに、実行可能ファイル以外のすべてのシンボルの前に挿入します。 "loadfltr"は、実行時にfilteesがすぐに処理されるオブジェクトをマークします。デフォルトのライブラリ検索パス。 「nodelete」は実行時にオブジェクトをアンロードしてはならないことを示します。 "nodlopen"は "dlopen"に利用できないオブジェクトをマークします。 "nldump"マークはオブジェクトを "dldump"でダンプできないことを示します。 "now"は、遅延のないバインディングでオブジェクトをマークします。 "origin"マークは、オブジェクトに$ ORIGINが含まれている可能性があります。 "defs"は未定義のシンボルを許可しません。 "muldefs"は複数の定義を可能にします。 "combreloc"は、複数の再配置セクションを結合し、それらをソートして動的シンボル検索キャッシングを可能にします。 "nocombreloc"は複数のリロケーションセクションを結合しないようにします。 "nocopyreloc"はコピー再配置の生成を無効にします。 -( アーカイブ -) --start-group アーカイブ --end-group ザ アーカイブ アーカイブファイルのリストでなければなりません。明示的なファイル名、または-lオプション。 新しい未定義参照が作成されなくなるまで、指定されたアーカイブが繰り返し検索されます。通常、アーカイブはコマンドラインで指定された順序で一度だけ検索されます。後でコマンドラインに表示されるアーカイブ内のオブジェクトによって参照される未定義のシンボルを解決するために、そのアーカイブ内のシンボルが必要な場合、リンカはその参照を解決できません。アーカイブをグループ化することにより、すべての可能な参照が解決されるまで繰り返し検索されます。 このオプションを使用すると、パフォーマンスが大幅に低下します。 2つ以上のアーカイブ間に避けられない循環参照がある場合にのみ使用することをお勧めします。 --accept-unknown-input-arch --no-accept-unknown-input-arch アーキテクチャが認識できない入力ファイルを受け入れるようにリンカーに指示します。ユーザーは、自分が何をしているのかを知っており、これらの未知の入力ファイルに意図的にリンクさせたいという前提があります。これは、リリース2.14より前のリンカのデフォルト動作でした。リリース2.14以降のデフォルトの動作は、そのような入力ファイルを拒否することです。--accept-unknown-input-arch 古い動作を復元するオプションが追加されました。 -アサート キーワード このオプションは、SunOSとの互換性のために無視されます。 - 力学 -dy -call_shared ダイナミックライブラリとのリンク。これは、共有ライブラリがサポートされているプラットフォームでのみ意味があります。このオプションは通常、このようなプラットフォームではデフォルトです。このオプションのさまざまなバリエーションは、さまざまなシステムとの互換性のためです。このオプションは、コマンドラインで複数回使用することができます。-l それに続くオプション。 -Bgroup 動的セクションの "DT_FLAGS_1"エントリに "DF_1_GROUP"フラグを設定します。これにより、実行時リンカーはこのオブジェクトのルックアップを処理し、依存関係はグループ内でのみ実行されます。--no-undefined 暗示される。このオプションは、共有ライブラリをサポートするELFプラットフォームでのみ意味があります。 -Bstatic -dn -non_shared -静的 共有ライブラリとリンクしないでください。これは、共有ライブラリがサポートされているプラットフォームでのみ意味があります。このオプションのさまざまなバリエーションは、さまざまなシステムとの互換性のためです。このオプションは、コマンドラインで複数回使用することができます。-l それに続くオプション。 -Bsymbolic 共有ライブラリを作成するときは、グローバルシンボルへの参照を共有ライブラリ内の定義にバインドします(存在する場合)。通常、共有ライブラリにリンクされたプログラムは、共有ライブラリ内の定義を上書きすることができます。このオプションは、共有ライブラリをサポートするELFプラットフォーム上でのみ意味があります。 --check-sections --no-check-sections リンカーに問い合せる ない セクションアドレスが重複していないかどうかを確認するために割り当てられた後でチェックします。通常、リンカーはこのチェックを実行し、重複が見つかった場合は適切なエラーメッセージを生成します。リンカーは、オーバーレイのセクションについて知っていて、セクションに余裕を持たせています。既定の動作は、コマンドラインスイッチを使用して復元できます--check-sections. --cref 相互参照テーブルを出力します。リンカーマップファイルが生成されている場合は、相互参照テーブルがマップファイルに出力されます。それ以外の場合は、標準出力に出力されます。 テーブルのフォーマットは意図的に単純なので、必要に応じてスクリプトで簡単に処理できます。シンボルは名前でソートされて印刷されます。各シンボルについて、ファイル名のリストが与えられます。シンボルが定義されている場合は、最初にリストされたファイルが定義の場所になります。残りのファイルにはシンボルへの参照が含まれています。 --no-define-common このオプションは、共通シンボルへのアドレスの割り当てを禁止します。スクリプトコマンド "INHIBIT_COMMON_ALLOCATION"は同じ効果を持ちます。 ザ--no-define-common オプションは、出力ファイルタイプの選択から共通シンボルにアドレスを割り当てる決定を切り離すことを可能にする。それ以外の場合は、リロケータブルでない出力タイプは、アドレスをCommonシンボルに強制的に割り当てます。使用--no-define-common 共有ライブラリから参照される共通シンボルには、メインプログラム内のアドレスのみが割り当てられます。これにより、共有ライブラリ内の未使用の重複領域がなくなり、実行時シンボル解決のための特殊な検索パスを持つ動的モジュールが多数ある場合に、間違った重複を解決する上での混乱を防ぐことができます。 --defsym シンボル = 表現 指定された絶対アドレスを含むグローバルシンボルを出力ファイルに作成します。 表現 。このオプションは、コマンドラインで複数のシンボルを定義するのに必要な回数だけ使用できます。限定された形式の算術演算は、 表現 このコンテキストでは、16進定数または既存のシンボル名を与えるか、 "+"と " - "を使用して16進定数またはシンボルを加算または減算することができます。もっと精巧な式が必要な場合は、スクリプトからリンカーコマンド言語を使用することを検討してください。 注意: 間に空白がないはずです シンボル 、等号( "='')、および 表現 . --demangle = スタイル --no-demangle これらのオプションは、エラーメッセージや他の出力のシンボル名をデマングルするかどうかを制御します。リンカはdemangleするように指示されると、シンボル名を読み込み可能な形式で表示しようとします。先頭のアンダースコアは、オブジェクトファイル形式で使用されている場合は取り除かれ、C ++のマングルされたシンボル名はユーザが読むことができる名前に変換されます。コンパイラごとに異なるマングリングスタイルがあります。オプションのデアンギュリングスタイル引数を使用して、コンパイラに適したデアントラリングスタイルを選択できます。リンカは、環境変数COLLECT_NO_DEMANGLE 設定されています。これらのオプションを使用して、デフォルトを上書きすることができます。 --dynamic-linker ファイル 動的リンカーの名前を設定します。これは、動的にリンクされたELF実行可能ファイルを生成する場合にのみ意味があります。デフォルトのダイナミックリンカは通常正しくあります。あなたが何をしているのか分からない限り、これを使わないでください。 --embedded-relocs このオプションは、-membedded-picオプションで生成されたMIPS組み込みPICコードをGNUコンパイラおよびアセンブラにリンクする場合にのみ意味があります。リンカーは、実行時に静的に初期化されたデータをポインタ値に再配置するために使用されるテーブルを作成します。詳細については、testsuite / ld-empicのコードを参照してください。 - 致命的警告 すべての警告をエラーとして扱います。 --force-exe-suffix 出力ファイルに.exe接尾辞が付いていることを確認します。 正常に構築された完全にリンクされた出力ファイルに ".exe"または ".dll"接尾辞がない場合、このオプションはリンカーに出力ファイルを ".exe"接尾辞付きの同じ名前にコピーさせます。このオプションは、Microsoft Windowsホストで未修正のUnixメークファイルを使用する場合に便利です.Windowsのバージョンによっては、「.exe」という接尾辞で終わらない限りイメージは実行されないためです。 --no-gc-sections --gc-sections 未使用の入力セクションのガベージコレクションを有効にします。このオプションをサポートしていないターゲットでは無視されます。このオプションは互換性がありません-r動的リンクで使用するべきではありません。このガベージコレクションを実行しないデフォルトの動作は、--no-gc-sections コマンドラインで - 助けて コマンドラインオプションの概要を標準出力に出力し、終了します。 --target-help すべてのターゲット固有のオプションの概要を標準出力に出力して終了します。 -地図 マップファイル ファイルへのリンクマップを出力する マップファイル 。その説明を参照してください-M 上記のオプション。 --no-keep-memory ld 通常、入力ファイルのシンボルテーブルをメモリにキャッシュすることにより、メモリ使用量に対する速度を最適化します。このオプションは、ld 必要に応じてシンボルテーブルを再読み込みすることで、メモリ使用量を最適化することができます。これは、ld 大きな実行可能ファイルをリンクしながらメモリ空間が不足します。 --no-undefined -z defs 通常、非シンボリック共有ライブラリを作成するときは、未定義のシンボルが許可され、実行時ローダによって解決されます。これらのオプションは、そのような未定義シンボルを許可しません。 --allow-multiple-definition -z muldefs 通常、シンボルが複数回定義されている場合、リンカは致命的なエラーを報告します。これらのオプションは複数の定義を可能にし、最初の定義が使用されます。 --allow-shlib-undefined --no-undefinedが設定されていても、共有オブジェクトの未定義シンボルを許可する。通常のオブジェクトの未定義シンボルは引き続きエラーを引き起こしますが、共有オブジェクトの未定義シンボルは無視されます。 no_undefinedの実装は、実行時リンカーが定義されていないシンボルを詰まらせることを前提としています。しかし、カーネルがロード時にパッチを当てて現在のアーキテクチャに最も適している関数を選択するので、共有ライブラリ内の未定義のシンボルが正常なシステム(BeOS)が少なくとも1つあります。 I.適切なmemset関数を動的に選択します。明らかに、HPPA共有ライブラリには未定義シンボルがあることも普通です。 --no-undefined-version 通常、シンボルに未定義のバージョンがある場合、リンカはそれを無視します。このオプションは、未定義バージョンのシンボルを許可しません。代わりに致命的なエラーが発行されます。 --no-warn-mismatch 通常はld 何らかの理由で不一致の入力ファイルをリンクしようとするとエラーが発生します。これは、異なるプロセッサーや異なるエンディアンにコンパイルされているためです。このオプションは、ld そのような可能性のあるエラーを黙って許可する必要があります。このオプションは、リンカーのエラーが不適切であることを保証する特別な処置を行った場合にのみ、注意して使用してください。 --no-whole-archive 効果をオフにする--whole-archive 後続のアーカイブファイル用のオプション。 --noinhibit-exec 実行可能な出力ファイルがまだ使用可能な場合は、それを保持してください。通常、リンク処理中にエラーが発生した場合、リンカは出力ファイルを生成しません。エラーが発生した場合に出力ファイルを書き込まずに終了します。 -nostdlib コマンドラインで明示的に指定されたライブラリディレクトリのみを検索します。リンカー・スクリプトで指定されたライブラリー・ディレクトリー(コマンド行で指定されたリンカー・スクリプトを含む)は無視されます。 --oformat 出力フォーマット ld 2種類以上のオブジェクトファイルをサポートするように構成することができます。もしあなたのld このように設定されている場合は、--oformat 出力オブジェクトファイルのバイナリ形式を指定するオプション。ときでさえld 代替オブジェクト形式をサポートするように設定されている場合、通常はこれを指定する必要はありません。ld 各マシンで最も普通のフォーマットをデフォルトの出力フォーマットとして生成するように設定する必要があります。 出力フォーマット はテキスト文字列で、BFDライブラリでサポートされている特定の形式の名前です。 (利用可能なバイナリフォーマットは、objdump -i)スクリプトコマンド "OUTPUT_FORMAT"も出力フォーマットを指定できますが、このオプションはそれを無効にします。 -qmagic このオプションは、Linux互換では無視されます。 -Qy このオプションは、SVR4との互換性のために無視されます。 - リラックス 機械依存の効果を持つオプション。このオプションは、いくつかのターゲットでのみサポートされています。 一部のプラットフォームでは、 - リラックス リンカがアドレスモードを緩和し、出力オブジェクトファイル内の新しい命令を合成するなど、プログラム内でのアドレッシングを解決したときに可能になる、グローバル最適化を実行します。 いくつかのプラットフォームでは、これらのリンク時にグローバル最適化により、結果として得られる実行可能ファイルのシンボリックデバッグが不可能になることがあります。これは、Matsushita MN10200およびMN10300ファミリのプロセッサの場合のように知られています。 これがサポートされていないプラットフォームでは、 - リラックス 受け入れられるが、無視される。 --retain-symbols-file ファイル名 保持する のみ ファイルにリストされているシンボル ファイル名 他のすべてを破棄します。 ファイル名 1行に1つのシンボル名を持つ単純なフラットファイルです。このオプションは、ランタイムメモリを節約するために、大きなグローバルシンボルテーブルが徐々に蓄積される環境(VxWorksなど)で特に便利です。 --retain-symbols-file する ない 未定義シンボル、または再配置に必要なシンボルを破棄します。 指定できるのは--retain-symbols-file コマンドラインで1回。上書きする-s そして-S. -rpath 指 ランタイムライブラリ検索パスにディレクトリを追加します。これはELF実行可能ファイルを共有オブジェクトとリンクするときに使用されます。すべて-rpath 引数は連結され、実行時リンカーに渡されます。実行時リンカーは、実行時に共有オブジェクトを見つけるためにそれらを使用します。ザ-rpath オプションは、リンクに明示的に含まれる共有オブジェクトが必要とする共有オブジェクトを見つけるときにも使用されます。の説明を参照してください-rpath-link オプション。もし-rpath ELF実行ファイルをリンクするときに使用されない場合、環境変数 "LD_RUN_PATH"の内容が定義されていれば使用されます。 ザ-rpath オプションは、SunOSでも使用できます。デフォルトでは、SunOSでは、リンカはすべての-L オプションが与えられます。もし-rpath オプションが使用されている場合、ランタイム検索パスは、-rpath オプションを無視して-Lオプション。これは、gccを使用するときに便利です-L オプションは、NFSにマウントされたファイルシステム上にある可能性があります。 他のELFリンカーとの互換性のために、-R オプションの後ろに、ファイル名ではなくディレクトリ名が続きます。-rpath オプション。 -rpath-link DIR ELFやSunOSを使用する場合、共有ライブラリの中には別の共有ライブラリが必要な場合があります。これは、 "ld -shared"リンクが共有ライブラリを入力ファイルの1つとして含む場合に発生します。 リンカーは、非共有、非再配置可能なリンクを実行するときにそのような依存関係に遭遇すると、自動的に必要な共有ライブラリを見つけようとし、リンクに明示的に含まれていない場合はリンクに含めます。このような場合、-rpath-link オプションは検索する最初のディレクトリのセットを指定します。ザ-rpath-link オプションは、コロンで区切られた名前のリストを指定するか、複数回出現することによってディレクトリ名のシーケンスを指定することができます。 このオプションは、共有ライブラリにハードコンパイルされた可能性のある検索パスを無効にするので、注意して使用する必要があります。このような場合、実行時リンカーとは異なる検索パスを誤って使用することは可能です。 リンカは、次の検索パスを使用して必要な共有ライブラリを検索します。 1. で指定されたディレクトリ-rpath-link オプション。 2. で指定されたディレクトリ-rpath オプション。の違い-rpath そして-rpath-link そのディレクトリは、-rpath オプションは実行可能ファイルに含まれ、実行時に使用されます。-rpath-link オプションはリンク時にのみ有効です。これは、ネイティブリンカー専用です。 3. ELFシステムでは、-rpath および "rpath-link"オプションが使用されていない場合は、環境変数 "LD_RUN_PATH"の内容を検索してください。これは、ネイティブリンカー専用です。 4. SunOSでは、-rpath オプションが使用されていない場合は、-L オプション。 5. ネイティブリンカーの場合、環境変数 "LD_LIBRARY_PATH"の内容。 6. ネイティブのELFリンカの場合、共有ライブラリの "DT_RUNPATH"または "DT_RPATH"のディレクトリで、必要な共有ライブラリが検索されます。"DT_RUNPATH"エントリが存在する場合、 "DT_RPATH"エントリは無視されます。 7. デフォルトのディレクトリ、通常は / lib そして / usr / lib . 8. ELFシステム上のネイティブリンカーの場合、ファイル /etc/ld.so.conf 存在する場合、そのファイルにあるディレクトリのリスト。 必要な共有ライブラリが見つからない場合、リンカーは警告を出し、リンクを続行します。 共有 -Bshareable 共有ライブラリを作成します。現在、ELF、XCOFF、SunOSプラットフォームでのみサポートされています。 SunOSでは、リンカは自動的に共有ライブラリを作成します。-e オプションが使用されず、リンクに未定義のシンボルがあります。 --sort-common このオプションは、ld 共通シンボルを適切な出力セクションに配置するときにサイズ別にソートする。最初にすべての1バイトシンボル、次にすべての2バイト、次にすべての4バイト、そしてそれ以外のものをすべて取得します。これは、配置制約のためにシンボル間のギャップを防ぐためです。 --split-by-file サイズ に似ている--split-by-reloc 入力ファイルごとに新しい出力セクションを作成します。 サイズ が達成された。 サイズ 指定されていない場合、デフォルトでは1のサイズになります。 --split-by-reloc カウント 出力ファイルに余分なセクションを作成して、ファイル内の単一の出力セクションに複数のセクションが含まれないようにします。 カウント 移転。これは、COFFオブジェクトファイル形式で特定のリアルタイムカーネルにダウンロードするための膨大なリロケータブルファイルを生成する場合に便利です。 COFFは1つのセクションに65535を超える再配置を表すことができないためです。これは、任意のセクションをサポートしていないオブジェクトファイル形式では機能しません。リンカーは、再配布のために個々の入力セクションを分割しないので、1つの入力セクションに カウント 1つの出力セクションにはその多くの再配置が含まれます。 カウント デフォルト値は32768です。 --stats 実行時間やメモリ使用量など、リンカの操作に関する統計を計算して表示します。 - 従来のフォーマット いくつかのターゲットでは、ld 既存のリンカーの出力とはいくつかの点で異なります。このスイッチの要求ld 代わりに従来の形式を使用します。 たとえば、SunOSでは、ld シンボル文字列テーブルの重複エントリを結合します。これにより、完全なデバッグ情報を持つ出力ファイルのサイズを30%以上削減できます。残念ながら、SunOSの "dbx"プログラムは、結果のプログラムを読むことができません( "gdb"は問題ありません)。ザ - 従来のフォーマット スイッチに通知するld 重複するエントリーを結合しない。 --section-start セクション名 = 組織 指定された絶対アドレスで出力ファイルのセクションを探します。 組織 。このオプションは、コマンドラインで複数のセクションを見つけるために必要な回数だけ使用できます。 組織 1つの16進整数でなければなりません。他のリンカーとの互換性のために、0x 通常は16進数値に関連付けられます。 注意: 間に空白がないはずです セクション名 、等号( "='')、および 組織 . -Tbss 組織 - データ 組織 - テキスト 組織 つかいます 組織 それぞれ---出力ファイルの "bss"、 "data"、 "text"セグメントの開始アドレスです。 組織 1つの16進整数でなければなりません。他のリンカーとの互換性のために、0x 通常は16進数値に関連付けられます。 --dll-verbose - 詳細 のバージョン番号を表示するld サポートされているリンカエミュレーションを一覧表示します。どの入力ファイルを開くことができるかできないかを表示します。リンカーが使用してい