英語フランス語スペイン語

Ad


OnWorksファビコン

i686-w64-mingw32-ld.bfd - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して OnWorks 無料ホスティング プロバイダーで i686-w64-mingw32-ld.bfd を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド i686-w64-mingw32-ld.bfd です。

プログラム:

NAME


ld-GNUリンカー

SYNOPSIS


ld [オプション] オブジェクトファイル ...

DESCRIPTION


ld 多数のオブジェクトファイルとアーカイブファイルを組み合わせ、それらのデータを再配置し、シンボルを結び付けます
参照。 通常、プログラムをコンパイルする最後のステップは実行することです ld.

ld AT&Tのリンクエディタのスーパーセットで記述されたリンカーコマンド言語ファイルを受け入れます
コマンド言語構文。リンクプロセスを明示的かつ完全に制御します。

このマニュアルページでは、コマンド言語については説明していません。 を参照してください ld 完全な「情報」のエントリ
コマンド言語およびGNUリンカーの他の側面の詳細。

このバージョンの ld 汎用BFDライブラリを使用してオブジェクトファイルを操作します。 この
ことができます ld さまざまな形式のオブジェクトファイルの読み取り、結合、および書き込みを行うには---
たとえば、COFFまたは「a.out」。 さまざまなフォーマットをリンクして、
利用可能な種類のオブジェクトファイル。

その柔軟性は別として、GNUリンカーは他のリンカーよりも提供に役立ちます
診断情報。 多くのリンカーは、に遭遇するとすぐに実行を放棄します
エラー; いつでも可能なとき、 ld 実行を継続し、他のエラーを識別できるようにします
(または、場合によっては、エラーにもかかわらず出力ファイルを取得するため)。

GNUリンカー ld 幅広い状況をカバーし、互換性を保つことを目的としています
他のリンカーで可能な限り。 その結果、あなたはそれを制御するための多くの選択肢があります
行動。

OPTIONS


リンカは多数のコマンドラインオプションをサポートしていますが、実際にはそれらのいくつかは
特定のコンテキストで使用されます。 たとえば、頻繁に使用する ld リンクすることです
サポートされている標準のUnixシステム上の標準のUnixオブジェクトファイル。 そのようなシステムでは、
ファイル「hello.o」をリンクします。

します/lib/crt0.o hello.o -lc

これは ld と呼ばれるファイルを生成するには 出力 ファイルをリンクした結果として
「/lib/crt0.o」と「hello.o」およびライブラリ「libc.a」。これは標準から提供されます。
ディレクトリを検索します。 (の説明を参照してください -l 以下のオプション。)

コマンドラインオプションの一部 ld コマンドラインの任意の場所で指定できます。
ただし、次のようなファイルを参照するオプション -l or -T、でファイルを読み取らせます
オブジェクトファイルに関連して、コマンドラインにオプションが表示されるポイント
他のファイルオプション。 異なる引数でファイル以外のオプションを繰り返すと、
それ以上の影響はありません、または以前の発生をオーバーライドします(コマンドのさらに左側にあるもの)
そのオプションの行)。 複数回意味のある指定が可能なオプションは次のとおりです。
以下の説明に記載されています。

オプション以外の引数は、相互にリンクされるオブジェクトファイルまたはアーカイブです。 彼ら
オブジェクトファイルを除いて、コマンドラインオプションの後に続く、先行する、または混在する可能性があります
オプションとその引数の間に引数を置くことはできません。

通常、リンカは少なくともXNUMXつのオブジェクトファイルで呼び出されますが、他のファイルを指定することもできます
を使用したバイナリ入力ファイルの形式 -l, -R、およびスクリプトコマンド言語。 もしも いいえ バイナリ
入力ファイルがまったく指定されている場合、リンカは出力を生成せず、
メッセージ いいえ ファイル.

リンカがオブジェクトファイルの形式を認識できない場合、リンカはそれがオブジェクトファイルであると見なします。
リンカースクリプト。 このように指定されたスクリプトは、に使用されるメインのリンカースクリプトを拡張します。
リンク(デフォルトのリンカースクリプトまたはを使用して指定されたもののいずれか) -T)。 この
この機能により、リンカはオブジェクトまたはオブジェクトのように見えるファイルに対してリンクできます。
アーカイブしますが、実際にはいくつかのシンボル値を定義するか、「INPUT」または「GROUP」を使用して
他のオブジェクトをロードします。 この方法でスクリプトを指定すると、メインリンカーが拡張されるだけです。
スクリプト。メインスクリプトの後に追加のコマンドが配置されます。 使用 -T 交換するオプション
デフォルトのリンカスクリプト全体ですが、「INSERT」コマンドの効果に注意してください。

名前がXNUMX文字のオプションの場合、オプション引数は次のいずれかに従う必要があります。
空白を挿入しないオプション文字、または個別の引数として指定する
それらを必要とするオプションの直後。

名前が複数の文字であるオプションの場合、XNUMXつのダッシュまたはXNUMXつのダッシュを前に付けることができます。
オプション名; 例えば、 -トレースシンボル & --トレース記号 同等です。 注---あります
この規則のXNUMXつの例外です。 小文字の「o」で始まる複数文字のオプション
前にダッシュをXNUMXつだけ付けることができます。 これは、との混乱を減らすためです -o オプション。 そう
例えば -オーマジック 出力ファイル名をに設定します マジック 一方 --オーマジック NMAGICを設定します
出力のフラグ。

複数文字のオプションへの引数は、オプション名から次のいずれかで区切る必要があります。
等号、またはオプションの直後に個別の引数として指定する
それらが必要です。 例えば、 --トレース記号 foo & --trace-symbol = foo 同等です。
複数文字のオプションの名前の一意の略語が受け入れられます。

注---リンカがコンパイラドライバを介して間接的に呼び出されている場合(例: gccの
すべてのリンカコマンドラインオプションの前に、 -Wl、 (または適切なものは何でも
特定のコンパイラドライバの場合)このように:

gcc -Wl、-start-group foo.o bar.o -Wl、-end-group

これは重要です。そうしないと、コンパイラドライバプログラムがサイレントにドロップする可能性があるためです。
リンカーオプション。リンクが不良になります。 オプションを渡すときにも混乱が生じる可能性があります
オプションと引数の間にスペースを使用するため、ドライバーを介して値を必要とする
セパレータとして機能し、ドライバがオプションのみをリンカと
コンパイラへの引数。 この場合、両方の結合された形式を使用するのが最も簡単です
次のようなXNUMX文字および複数文字のオプション。

gcc foo.o bar.o -Wl、-eENTRY -Wl、-Map = a.map

以下は、GNUリンカによって受け入れられる汎用コマンドラインスイッチの表です。

@file
からコマンドラインオプションを読み取る file。 読み取られたオプションは、の代わりに挿入されます
オリジナル @file オプション。 場合 file 存在しないか、読み取ることができない場合、オプション
文字通りに扱われ、削除されません。

オプションで file 空白で区切られます。 空白文字が含まれる場合があります
オプション全体を一重引用符または二重引用符で囲むことにより、オプション内で。 どれでも
文字(バックスラッシュを含む)は、文字の前に付けることで含めることができます
バックスラッシュが含まれています。 NS file それ自体に追加の@が含まれる場合がありますfile オプション; どれか
このようなオプションは再帰的に処理されます。

-a キーワード
このオプションは、HP / UXの互換性のためにサポートされています。 NS キーワード 引数は次のいずれかである必要があります
文字列 アーカイブ, sharedまたは デフォルト. -アーカイブ 機能的には同等です
-Bスタティック、および他のXNUMXつのキーワードは機能的に同等です -バダイナミック。 この
オプションは何度でも使用できます。

- 監査 オーディリブ
追加 オーディリブ 動的セクションの「DT_AUDIT」エントリに移動します。 オーディリブ チェックされていません
存在するため、またライブラリで指定されたDT_SONAMEを使用しません。 指定されている場合
複数回「DT_AUDIT」には、コロンで区切られた監査インターフェースのリストが含まれます。
使用する。 リンカが共有の検索中に監査エントリを持つオブジェクトを見つけた場合
ライブラリの場合、対応する「DT_DEPAUDIT」エントリが出力ファイルに追加されます。 この
オプションは、rtld-auditインターフェースをサポートするELFプラットフォームでのみ意味があります。

-A 建築
-アーキテクチャ=建築
の現在のリリースでは ld、このオプションは、インテル960ファミリーの
アーキテクチャ。 その中で ld 構成、 建築 引数は、
960ファミリの特定のアーキテクチャ、いくつかのセーフガードを有効にし、
アーカイブライブラリの検索パス。

の将来のリリース ld 他のアーキテクチャでも同様の機能をサポートする場合があります
家族。

-b 入力形式
--format =入力形式
ld 複数の種類のオブジェクトファイルをサポートするように構成できます。 もしあなたの ld is
このように構成すると、 -b 入力のバイナリ形式を指定するオプション
コマンドラインでこのオプションに従うオブジェクトファイル。 ときでさえ ld 構成されています
代替オブジェクト形式をサポートするために、通常、これを指定する必要はありません。 ld
デフォルトの入力フォーマットとして、それぞれで最も一般的なフォーマットを期待するように構成する必要があります
機械。 入力形式 はテキスト文字列であり、サポートされている特定の形式の名前です。
BFDライブラリ。 (利用可能なバイナリ形式をリストすることができます オブジェクトダンプ -i.)

異常なバイナリでファイルをリンクしている場合は、このオプションを使用することをお勧めします
フォーマット。 使用することもできます -b フォーマットを明示的に切り替える(オブジェクトファイルをリンクする場合)
さまざまな形式の)、含めることによって -b 入力形式 オブジェクトファイルの各グループの前
特定の形式で。

デフォルトの形式は、環境変数「GNUTARGET」から取得されます。

コマンド「TARGET」を使用して、スクリプトから入力形式を定義することもできます。

-c MRIコマンドファイル
--mri-script =MRIコマンドファイル
MRIによって生成されたリンカーとの互換性のために、 ld で書かれたスクリプトファイルを受け入れます
MRI互換スクリプトファイルで説明されている代替の制限されたコマンド言語
GNUldドキュメントのセクション。 オプションでMRIスクリプトファイルを導入する -c; 使用する
  -T 汎用で記述されたリンカースクリプトを実行するオプション ld スクリプト記述
言語。 もしも MRI コマンドファイル 存在しない、 ld 指定されたディレクトリでそれを探します
いずれかで -L オプション。

-d
-dc
-dp これらのXNUMXつのオプションは同等です。 互換性のために複数のフォームがサポートされています
他のリンカーと。 再配置可能な出力であっても、共通のシンボルにスペースを割り当てます
ファイルが指定されています( -r)。 スクリプトコマンド「FORCE_COMMON_ALLOCATION」には、
同じ効果。

--校長 オーディリブ
-P オーディリブ
追加 オーディリブ 動的セクションの「DT_DEPAUDIT」エントリに移動します。 オーディリブ ではありません
存在を確認しました。また、ライブラリで指定されたDT_SONAMEを使用しません。 もしも
複数回指定された「DT_DEPAUDIT」には、コロンで区切られた監査のリストが含まれます
使用するインターフェース。 このオプションは、
rtld-auditインターフェース。 -Pオプションは、Solarisとの互換性のために提供されています。

-e エントリ
--entry =エントリ
  エントリ プログラムの実行を開始するための明示的なシンボルとしてではなく、
デフォルトのエントリポイント。 名前の付いた記号がない場合 エントリ、リンカーはしようとします
パーズ エントリ 番号として、それをエントリアドレスとして使用します(番号は
10進数で解釈されます。 リーディングを使用できます 0x 基数16、またはリーディング 0 ベース用
8)。

--exclude-libs リブ,リブ、...
シンボルを自動的に作成しないアーカイブライブラリのリストを指定します
エクスポートされました。 ライブラリ名は、コンマまたはコロンで区切ることができます。 指定する
「--exclude-libsALL」は、すべてのアーカイブライブラリのシンボルを自動エクスポートから除外します。
このオプションは、リンカーのi386PEターゲットポートとELFでのみ使用できます。
ターゲットポート。 i386 PEの場合、.defファイルに明示的にリストされているシンボルは引き続き
このオプションに関係なく、エクスポートされます。 ELFターゲットポートの場合、これによって影響を受けるシンボル
オプションは非表示として扱われます。

--implib のモジュールを除外する モジュール,モジュール、...
オブジェクトファイルまたはアーカイブメンバーのリストを指定します。このリストからシンボルを指定することはできません。
自動的にエクスポートされますが、インポートライブラリに卸売りでコピーする必要があります
リンク中に生成されます。 モジュール名は、コンマまたは
コロンであり、によって使用されるファイル名と正確に一致する必要があります ld ファイルを開く。 アーカイブ用
メンバーの場合、これは単にメンバー名ですが、オブジェクトファイルの場合、リストされている名前は
リンカの入力ファイルを指定するために使用されるパスを正確に含めて一致させます
コマンドライン。 このオプションは、のi386PEターゲットポートでのみ使用できます。
リンカ。 .defファイルに明示的にリストされているシンボルは、関係なくエクスポートされます。
このオプション。

-E
--エクスポート-動的
--no-export-dynamic
動的にリンクされた実行可能ファイルを作成する場合、 -E オプションまたは
--エクスポート-動的 オプションを指定すると、リンカはすべてのシンボルを動的シンボルに追加します
テーブル。 ダイナミックシンボルテーブルは、ダイナミックから見えるシンボルのセットです。
実行時のオブジェクト。

これらのオプションのいずれも使用しない場合(または --no-export-dynamic オプション
デフォルトの動作に戻す)、動的シンボルテーブルには通常のみが含まれます
リンクで言及されている動的オブジェクトによって参照されるシンボル。

「dlopen」を使用して、シンボルを参照する必要がある動的オブジェクトをロードする場合
他の動的オブジェクトではなく、プログラムによって定義されている場合は、おそらく
プログラム自体をリンクするときにこのオプションを使用する必要があります。

動的リストを使用して、どのシンボルを追加するかを制御することもできます。
出力形式がサポートしている場合は、動的シンボルテーブル。 の説明を参照してください
-動的リスト.

このオプションは、ELFターゲットポートに固有であることに注意してください。 PEターゲットは同様のをサポートします
DLLまたはEXEからすべてのシンボルをエクスポートする関数。 の説明を参照してください
--すべてのシンボルをエクスポート を参照してください。

-EB ビッグエンディアンオブジェクトをリンクします。 これは、デフォルトの出力形式に影響します。

-THE リトルエンディアンオブジェクトをリンクします。 これは、デフォルトの出力形式に影響します。

-f
--auxiliary =
ELF共有オブジェクトを作成するときは、内部DT_AUXILIARYフィールドを
指定された名前。 これは、ダイナミックリンカに共有のシンボルテーブルを通知します
オブジェクトは、共有オブジェクトのシンボルテーブルの補助フィルターとして使用する必要があります
.

後でこのフィルターオブジェクトに対してプログラムをリンクする場合は、
プログラムでは、ダイナミックリンカはDT_AUXILIARYフィールドを参照します。 ダイナミックリンカーの場合
フィルタオブジェクトからのシンボルを解決します。最初に、
共有オブジェクトの定義 。 ある場合は、代わりに使用されます
フィルタオブジェクトの定義。 共有オブジェクト 存在する必要はありません。 したがって、
共有オブジェクト 特定の代替実装を提供するために使用される場合があります
おそらくデバッグまたはマシン固有のパフォーマンスのための関数。

このオプションは複数回指定できます。 DT_AUXILIARYエントリが作成されます
コマンドラインに表示される順序で。

-F
--filter =
ELF共有オブジェクトを作成するときは、内部DT_FILTERフィールドを指定された値に設定します
名前。 これは、ダイナミックリンカに共有オブジェクトのシンボルテーブルが
作成中は、共有オブジェクトのシンボルテーブルのフィルターとして使用する必要があります
.

後でこのフィルターオブジェクトに対してプログラムをリンクする場合は、
プログラムでは、ダイナミックリンカはDT_FILTERフィールドを参照します。 ダイナミックリンカーは
通常どおり、フィルターオブジェクトのシンボルテーブルに従ってシンボルを解決しますが、
共有オブジェクトで見つかった定義に実際にリンクします 。 したがって、
フィルタオブジェクトを使用して、オブジェクトによって提供されるシンボルのサブセットを選択できます
.

一部の古いリンカーは、 -F のコンパイルツールチェーン全体のオプション
入力オブジェクトファイルと出力オブジェクトファイルの両方にオブ​​ジェクトファイル形式を指定します。 GNUリンカー
この目的のために他のメカニズムを使用します: -b, - フォーマット, --oformat オプション、
リンカスクリプトの「TARGET」コマンド、および「GNUTARGET」環境変数。 GNUは
リンカは無視します -F ELF共有オブジェクトを作成しない場合のオプション。

-fini =
ELF実行可能ファイルまたは共有オブジェクトを作成する場合、実行可能ファイルまたは共有オブジェクトのときにNAMEを呼び出します。
DT_FINIを関数のアドレスに設定することにより、共有オブジェクトがアンロードされます。 に
デフォルトでは、リンカは呼び出す関数として「_fini」を使用します。

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

-G
--gpsize =
GPレジスタを使用して最適化するオブジェクトの最大サイズを次のように設定します。 サイズ。 この
大きな書き込みをサポートするMIPSELFなどのオブジェクトファイル形式でのみ意味があります
小さなオブジェクトを別のセクションに分けます。 これは他のオブジェクトファイルでは無視されます
フォーマット。

-h
-soname =
ELF共有オブジェクトを作成するときは、内部DT_SONAMEフィールドを指定された値に設定します
名前。 実行可能ファイルがDT_SONAMEフィールドを持つ共有オブジェクトにリンクされている場合、
次に、実行可能ファイルが実行されると、ダイナミックリンカは共有をロードしようとします
に指定されたファイル名を使用するのではなく、DT_SONAMEフィールドで指定されたオブジェクト
リンカー。

-i インクリメンタルリンクを実行します(オプションと同じ) -r).

-init =
ELF実行可能ファイルまたは共有オブジェクトを作成する場合、実行可能ファイルまたは共有オブジェクトのときにNAMEを呼び出します。
DT_INITを関数のアドレスに設定することにより、共有オブジェクトがロードされます。 に
デフォルトでは、リンカは呼び出す関数として「_init」を使用します。

-l 名前仕様
--library =名前仕様
で指定されたアーカイブまたはオブジェクトファイルを追加します 名前仕様 リンクするファイルのリストに。
このオプションは何度でも使用できます。 もしも 名前仕様 次の形式です :ファイル名, ld
ライブラリパスで次のファイルを検索します ファイル名、それ以外の場合は検索します
と呼ばれるファイルのライブラリパス libnamespec.a.

共有ライブラリをサポートするシステムでは、 ld 以外のファイルも検索する場合があります
libnamespec.a。 具体的には、ELFおよびSunOSシステムでは、 ld ディレクトリを検索します
と呼ばれるライブラリ libnamespec.so と呼ばれるものを検索する前に libnamespec.a。 (に
慣例では、「。so」拡張子は共有ライブラリを示します。)この動作に注意してください。
に適用されません :ファイル名、これは常にと呼ばれるファイルを指定します ファイル名.

リンカは、アーカイブが指定されている場所で、アーカイブをXNUMX回だけ検索します。
コマンドライン。 アーカイブが、あるオブジェクトで定義されていないシンボルを定義している場合
コマンドラインでアーカイブの前に表示されたリンカには、
アーカイブからの適切なファイル。 ただし、オブジェクト内の未定義のシンボル
後でコマンドラインに表示されても、リンカはアーカイブを検索しません。
再び。

ジョブの設定方法については、 -( リンカにアーカイブを複数回検索させる方法のオプション。

コマンドラインで同じアーカイブを複数回リストすることができます。

このタイプのアーカイブ検索は、Unixリンカーの標準です。 しかし、あなたが
ld AIXでは、AIXリンカの動作とは異なることに注意してください。

-L 検索ディレクトリ
--library-path =検索ディレクトリ
パスを追加 検索ディレクトリ パスのリストに ld アーカイブライブラリを検索し、
ld 制御スクリプト。 このオプションは何度でも使用できます。 ディレクトリは
コマンドラインで指定された順序で検索されます。 ディレクトリ
コマンドラインで指定されたものは、デフォルトのディレクトリの前に検索されます。 全て -L
オプションはすべてに適用されます -l オプションが表示される順序に関係なく、オプション。
-L オプションは方法に影響を与えません ld リンカースクリプトを検索しない限り -T オプションがある
指定。

If 検索ディレクトリ 「=」で始まり、「=」は シスルート 接頭辞,
によって制御されます --sysroot オプション、またはリンカーの構成時に指定されます。

検索されたパスのデフォルトセット(で指定されていない) -L)どちらに依存します
エミュレーションモード ld を使用しており、場合によっては、その構成方法についても説明します。

パスは、「SEARCH_DIR」コマンドを使用してリンクスクリプトで指定することもできます。
このように指定されたディレクトリは、リンカスクリプトが検索されるポイントで検索されます
コマンドラインにが表示されます。

-m emulation
エミュレートする emulation リンカ。 使用可能なエミュレーションを一覧表示できます。
-詳細 or -V オプション。

Status -m オプションが使用されていない場合、エミュレーションは「LDEMULATION」から取得されます
環境変数(定義されている場合)。

それ以外の場合、デフォルトのエミュレーションはリンカーの構成方法によって異なります。

-M
--print-map
リンクマップを標準出力に印刷します。 リンクマップは、に関する情報を提供します
以下を含むリンク:

・オブジェクトファイルがメモリにマップされる場所。

・共通シンボルの割り当て方法。

・リンクに含まれるすべてのアーカイブメンバーと、
アーカイブメンバーが持ち込まれました。

・シンボルに割り当てられた値。

注-値が次の式を含む式によって計算される記号
同じシンボルの以前の値を参照すると、正しい結果が得られない場合があります
リンクマップに表示されます。 これは、リンカーが中間を破棄するためです
結果が得られ、式の最終値のみが保持されます。 そのような下で
状況によっては、リンカは角括弧で囲まれた最終値を表示します。
したがって、たとえば、以下を含むリンカースクリプト:

フー=1
フー = フー * 4
フー = フー + 8

次の場合、リンクマップに次の出力が生成されます。 -M オプションが使用されます:

0x00000001 フー = 0x1
[0x0000000c] foo =(foo * 0x4)
[0x0000000c] foo =(foo + 0x8)

見る リンカスクリプトの式の詳細については。

-n
--nmagic
セクションのページ配置をオフにし、共有ライブラリに対するリンクを無効にします。 もしも
出力形式はUnixスタイルのマジックナンバーをサポートし、出力を「NMAGIC」としてマークします。

-N
--オーマジック
テキストセクションとデータセクションを読み取りと書き込みができるように設定します。 また、ページを揃えないでください
データセグメント、および共有ライブラリに対するリンクを無効にします。 出力形式の場合
Unixスタイルのマジックナンバーをサポートし、出力を「OMAGIC」としてマークします。 注:ただし、
書き込み可能なテキストセクションはPE-COFFターゲットで許可されていますが、
Microsoftが発行したフォーマット仕様。

--ノーマジック
このオプションは、 -N オプション。 テキストセクションをに設定します
読み取り専用であり、データセグメントを強制的にページ揃えにします。 注-このオプションは
共有ライブラリに対するリンクを有効にしないでください。 使用する -バダイナミック このため。

-o 出力
--output =出力
  出力 によって作成されたプログラムの名前として ld; このオプションがない場合
指定、名前 アウト デフォルトで使用されます。 スクリプトコマンド「OUTPUT」も可能です
出力ファイル名を指定します。

-O レベル
If レベル ゼロより大きい数値です ld 出力を最適化します。 これはかもしれません
かなり時間がかかるため、おそらくファイナルでのみ有効にする必要があります
バイナリ。 現時点では、このオプションはELF共有ライブラリの生成にのみ影響します。 未来
リンカのリリースでは、このオプションをさらに活用する場合があります。 また、現在ありません
このオプションのゼロ以外の値が異なる場合のリンカーの動作の違い。
繰り返しますが、これは将来のリリースで変更される可能性があります。

-プッシュ状態
  -プッシュ状態 を管理するフラグの現在の状態を保持することができます
XNUMXつの対応するファイルですべてを復元できるようにする入力ファイルの処理
--ポップ状態 オプションを選択します。

対象となるオプションは次のとおりです。 -バダイナミック, -Bスタティック, -dn, -dy, -call_shared,
-非共有, -静的, -N, -n, -- 全体アーカイブ, --アーカイブなし, -r, -あなたは,
--copy-dt-needed-entries, --no-copy-dt-needed-entries, - 必要に応じて, -必要に応じて,
& -a.

このオプションのXNUMXつのターゲットは、 パッケージ構成。 と一緒に使用する場合
--libs オプション必要な可能性のあるすべてのライブラリが一覧表示され、リンクされている可能性があります
いつも。 次のように何かを返すことをお勧めします。

-Wl、-push-state、-必要に応じて-libone -libtwo -Wl、-pop-state

--push-stateの効果を元に戻し、管理するフラグの以前の値を復元します
入力ファイルの処理。

-q
--emit-relocs
再配置セクションとコンテンツは、完全にリンクされた実行可能ファイルのままにします。 リンクを投稿
分析および最適化ツールは、正しく実行するためにこの情報を必要とする場合があります
実行可能ファイルの変更。 これにより、実行可能ファイルが大きくなります。

このオプションは現在、ELFプラットフォームでのみサポートされています。

--力動的
出力ファイルに動的セクションを強制します。 このオプションはVxWorksに固有です
ターゲット。

-r
-再配置可能
再配置可能な出力を生成します---つまり、次のように機能できる出力ファイルを生成します
への入力 ld。 これはよく呼ばれます 部分的な 連結。 副作用として、環境で
標準のUnixマジックナンバーをサポートするこのオプションは、出力ファイルの
「OMAGIC」へのマジックナンバー。 このオプションが指定されていない場合、絶対ファイルは
生産。 C ++プログラムをリンクする場合、このオプション 意志 への参照を解決する
コンストラクター; そのためには、 -あなたは.

入力ファイルの形式が出力ファイルと同じでない場合、部分的なリンク
その入力ファイルに再配置が含まれていない場合にのみサポートされます。 違う
出力形式にはさらに制限があります。 たとえば、いくつかの「a.out」ベースの形式
他の形式の入力ファイルとの部分的なリンクはまったくサポートしていません。

このオプションはと同じことをします -i.

-R ファイル名
--just-symbols =ファイル名
からシンボル名とそのアドレスを読み取る ファイル名、ただし、再配置したり、含めたりしないでください
出力でそれ。 これにより、出力ファイルがシンボリックに絶対参照できるようになります
他のプログラムで定義されているメモリの場所。 このオプションは、
一度。

他のELFリンカーとの互換性のために、 -R オプションの後にディレクトリが続きます
ファイル名ではなく、名前として扱われます -rpath オプションを選択します。

-s
--strip-all
出力ファイルからすべてのシンボル情報を省略します。

-S
--strip-debug
出力ファイルからデバッガシンボル情報(すべてのシンボルではない)を省略します。

-t
- 痕跡
入力ファイルの名前を次のように出力します ld それらを処理します。

-T スクリプトファイル
--script =スクリプトファイル
  スクリプトファイル リンカースクリプトとして。 このスクリプトは ldのデフォルトのリンカースクリプト
(それに追加するのではなく)、そう コマンドファイル に必要なすべてを指定する必要があります
出力ファイルを記述します。 もしも スクリプトファイル 現在のディレクトリに存在しません、
「ld」は、前の任意のディレクトリで指定されたディレクトリでそれを探します -L オプション。 多数
-T オプションが蓄積されます。

-dT スクリプトファイル
--default-script =スクリプトファイル
  スクリプトファイル デフォルトのリンカースクリプトとして。

このオプションは、 - 脚本 スクリプトの処理が
コマンドラインの残りの部分が処理されるまで遅延します。 これにより、
後に配置されたオプション -デフォルト-スクリプト に影響を与えるコマンドラインのオプション
リンカスクリプトの動作。これは、リンカコマンドラインで重要になる可能性があります。
ユーザーが直接制御することはできません。 (たとえば、コマンドラインが
などの別のツールによって構築されます gccの).

-u シンボル
--undefined =シンボル
シンボル 未定義のシンボルとして出力ファイルに入力されます。 これを行うと、
たとえば、標準ライブラリからの追加モジュールのリンクをトリガーします。 -u 多分
さまざまなオプション引数を繰り返して、追加の未定義の記号を入力します。 この
オプションは、「EXTERN」リンカスクリプトコマンドと同等です。

このオプションを使用して、追加のモジュールを強制的にリンクにプルする場合は、
シンボルが未定義のままであることがエラーである場合、オプション
--必須定義 代わりに使用する必要があります。

--require-defined =シンボル
ことを要求 シンボル 出力ファイルで定義されています。 このオプションはオプションと同じです
- 未定義 ただし、 シンボル 出力ファイルで定義されていない場合、リンカー
エラーを発行して終了します。 同じ効果は、リンカースクリプトで次の方法で実現できます。
「EXTERN」、「ASSERT」、「DEFINED」を併用します。 このオプションは複数使用できます
追加の記号が必要になる回数。

-あなたは C ++プログラム以外の場合、このオプションは次のようになります。 -r:生成します
再配置可能な出力---つまり、への入力として機能できる出力ファイル ld。 時
C ++プログラムのリンク、 -あなたは ありません コンストラクターへの参照を解決します。 -r。 します
使用するために動作しません -あなたは それ自体がリンクされていたファイル -あなたは; 一度
コンストラクタテーブルが作成されているため、追加できません。 使用する -あなたは 最後だけ
部分的なリンク、および -r 他の人のために。

--orphan-handling =モード
孤立したセクションの処理方法を制御します。 孤立したセクションは、具体的にはないセクションです
リンカースクリプトで言及されています。

モード 次の値のいずれかを持つことができます。

"場所"
孤立したセクションは、戦略に従って適切な出力セクションに配置されます
に記載 孤児 セクション。 オプション - 個性的 セクションの状態にも影響します
置いた。

"破棄"
孤立したセクションはすべて、 /破棄/ のセクションから無料でダウンロードできます。

"暖かい"
リンカは「place」と同様に孤立セクションを配置し、警告も発行します。

"エラー"
孤立したセクションが見つかった場合、リンカはエラーで終了します。

デフォルトの場合 -孤児の取り扱い 与えられていないのは「場所」です。

-ユニーク[=セクション]
一致する入力セクションごとに個別の出力セクションを作成します セクション、または
オプションのワイルドカード セクション すべての孤立した入力セクションについて、引数がありません。 NS
孤立セクションは、リンカースクリプトで特に言及されていないセクションです。 あなたはこれを使うことができます
コマンドラインで複数回オプションを選択します。 入力の通常のマージを防ぎます
同じ名前のセクション。リンカースクリプトの出力セクションの割り当てをオーバーライドします。

-v
- バージョン
-V のバージョン番号を表示する ldを選択します。 -V オプションには、サポートされているエミュレーションも一覧表示されます。

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

-X
--discard-locals
すべての一時的なローカルシンボルを削除します。 (これらの記号は、システム固有のローカルで始まります
ラベルプレフィックス、通常 .L ELFシステムの場合または L 従来のa.outシステムの場合。)

-y シンボル
--trace-symbol =シンボル
リンクされた各ファイルの名前を出力します シンボル が表示されます。 このオプションを指定できます
何度でも。 多くのシステムでは、アンダースコアを前に付ける必要があります。

このオプションは、リンクに未定義のシンボルがあるがわからない場合に便利です。
参照元。

-Y path
Add path デフォルトのライブラリ検索パスに移動します。 このオプションはSolarisに存在します
互換性。

-z キーワード
認識されるキーワードは次のとおりです。

コムレロック
複数の再配置セクションを組み合わせて並べ替え、動的なシンボルルックアップを作成します
キャッシュが可能です。

定義
オブジェクトファイル内の未定義のシンボルを禁止します。 共有の未定義のシンボル
ライブラリは引き続き許可されます。

実行スタック
オブジェクトを実行可能スタックが必要であることを示します。

全体的な
このオプションは、共有オブジェクトを構築する場合にのみ意味があります。 それは
この共有オブジェクトによって定義されたシンボルは、のシンボル解決に使用できます
続いてロードされたライブラリ。

初期化
このオプションは、共有オブジェクトを構築する場合にのみ意味があります。 オブジェクトをマークします
その実行時の初期化は、の実行時の初期化の前に発生します。
同時にプロセスに持ち込まれた他のオブジェクト。 同様に
オブジェクトのランタイムファイナライズは、のランタイムファイナライズ後に発生します
その他のオブジェクト。

介入する
シンボルテーブルが介在するオブジェクトを、以外のすべてのシンボルの前にマークします。
プライマリ実行可能ファイル。

怠惰な
実行可能ファイルまたは共有ライブラリを生成するときは、それをマークして動的に通知します
関数が呼び出された時点まで関数呼び出しの解決を延期するリンカー
(遅延バインディング)、ロード時ではなく。 遅延バインディングがデフォルトです。

ロードフィルター
フィルタが実行時にすぐに処理されるオブジェクトをマークします。

muldef
複数の定義を許可します。

ノコンブレロク
複数の再配置セクションの結合を無効にします。

nocopyreloc
で定義された変数の代わりに使用されるリンカー生成の.dynbss変数を無効にします
共有ライブラリ。 動的なテキストの再配置が発生する可能性があります。

ノードデフォルトライブラリ
このオブジェクトの依存関係の検索で無視されるオブジェクトをマークします
デフォルトのライブラリ検索パス。

ノードレット
オブジェクトを実行時にアンロードしてはならないことを示します。

ノドロペン
オブジェクトを「dlopen」で使用できないようにマークします。

ノーダンプ
オブジェクトを「dldump」でダンプできないことを示します。

noexecstack
オブジェクトを実行可能スタックを必要としないものとしてマークします。

클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다.
共有オブジェクトのDT_TEXTRELをエラーとして扱います。

注意事項
共有オブジェクトのDT_TEXTRELをエラーとして扱わないでください。

テキストオフ
共有オブジェクトのDT_TEXTRELをエラーとして扱わないでください。

ノレルロ
オブジェクトにELF「PT_GNU_RELRO」セグメントヘッダーを作成しないでください。

実行可能ファイルまたは共有ライブラリを生成するときは、それをマークして動的に通知します
プログラムの起動時または共有時にすべてのシンボルを解決するリンカー
ライブラリは、関数呼び出しの解決を延期する代わりに、dlopenを使用するようにリンクされています
関数が最初に呼び出された時点まで。

起源
オブジェクトに$ ORIGINが含まれている可能性があることを示します。

リロ
オブジェクトにELF「PT_GNU_RELRO」セグメントヘッダーを作成します。

max-page-size =
エミュレーションの最大ページサイズをに設定します .

common-page-size =
エミュレーションの共通ページサイズをに設定します .

stack-size =
ELF「PT_GNU_STACK」セグメントでのスタックサイズを指定します。 ゼロを指定すると
デフォルトのゼロ以外のサイズの「PT_GNU_STACK」セグメントの作成をオーバーライドします。

bndplt
PLTエントリには常にBNDプレフィックスを生成します。 Linux / x86_64でサポートされています。

noextern-protected-data
共有ライブラリを構築するときに、保護されたデータシンボルを外部として扱わないでください。 この
オプションは、リンカーバックエンドのデフォルトをオーバーライドします。 誤った回避策に使用できます
コンパイラによって生成された保護されたデータシンボルに対する再配置。 の更新
別のモジュールによって保護されたデータシンボルは、結果の共有には表示されません
図書館。 i386およびx86-64でサポートされています。

call-nop = prefix-addr
call-nop = prefix-nop
call-nop = suffix-nop
call-nop = prefix-バイト
call-nop = Supplements-バイト
間接呼び出しをローカルに変換する場合は、1バイトの「NOP」パディングを指定します
GOTスロットを介して定義された関数foo。 call-nop = prefix-addr 「0x67」を生成します
fooを呼び出します」。 call-nop = prefix-nop 「0x90callfoo」を生成します。 call-nop = suffix-nop
「callfoo0x90」を生成します。 call-nop = prefix-バイト を生成しますバイト コール foo」.
call-nop = Supplements-バイト 「callfoo」を生成します バイト"。 i386およびx86_64でサポートされています。

Solarisとの互換性のため、他のキーワードは無視されます。

-( アーカイブ -)
--開始グループ アーカイブ --エンドグループ
  アーカイブ アーカイブファイルのリストである必要があります。 それらは明示的なファイルのいずれかである可能性があります
名前、または -l オプション。

指定されたアーカイブは、新しい未定義の参照がなくなるまで繰り返し検索されます
作成した。 通常、アーカイブは指定された順序でXNUMX回だけ検索されます。
コマンドラインで。 未定義を解決するためにそのアーカイブ内のシンボルが必要な場合
後でコマンドラインに表示されるアーカイブ内のオブジェクトによって参照されるシンボル、
リンカはその参照を解決できません。 アーカイブをグループ化することにより、
考えられるすべての参照が解決されるまで、それらはすべて繰り返し検索されます。

このオプションを使用すると、パフォーマンスが大幅に低下します。 次の場合にのみ使用することをお勧めします
XNUMXつ以上のアーカイブ間には避けられない循環参照があります。

--accept-unknown-input-arch
--no-accept-unknown-input-arch
アーキテクチャを認識できない入力ファイルを受け入れるようにリンカに指示します。 NS
ユーザーは自分が何をしているのかを知っており、意図的にリンクしたいと考えていると想定しています。
これらの未知の入力ファイルで。 これは、以前のリンカーのデフォルトの動作でした
リリース2.14。 リリース2.14以降のデフォルトの動作は、そのような入力を拒否することです。
ファイルなど --accept-unknown-input-arch 古いものを復元するオプションが追加されました
動作。

- 必要に応じて
-必要に応じて
このオプションは、コマンドで言及されているダイナミックライブラリのELFDT_NEEDEDタグに影響します。
後の行 - 必要に応じて オプション。 通常、リンカはDT_NEEDEDタグを追加します
ライブラリかどうかに関係なく、コマンドラインに記載されている各ダイナミックライブラリ
実際に必要かどうか。 - 必要に応じて DT_NEEDEDタグが次の場合にのみ発行されるようにします
その図書館 at それ ポイント in   弱くない未定義のシンボルを満たす
通常のオブジェクトファイルからの参照、またはライブラリがDT_NEEDEDに見つからない場合
他の必要なライブラリのリスト、別のライブラリからの弱くない未定義のシンボル参照
ダイナミックライブラリが必要でした。 コマンドラインに表示されるオブジェクトファイルまたはライブラリ After
問題のライブラリは、ライブラリが必要に応じて表示されるかどうかには影響しません。 これは
アーカイブからオブジェクトファイルを抽出するためのルールに似ています。 -必要に応じて
デフォルトの動作を復元します。

-追加-必要
--追加不要
これらのXNUMXつのオプションは、名前が
- 必要に応じて & -必要に応じて オプション。 それらはに置き換えられました
--copy-dt-needed-entries & --no-copy-dt-needed-entries.

-主張する キーワード
このオプションは、SunOSとの互換性のために無視されます。

-バダイナミック
-dy
-call_shared
ダイナミックライブラリに対するリンク。 これは、共有されているプラ​​ットフォームでのみ意味があります
ライブラリがサポートされています。 このオプションは通常、このようなプラットフォームのデフォルトです。 NS
このオプションのさまざまなバリエーションは、さまざまなシステムとの互換性のためのものです。 してもいいです
コマンドラインでこのオプションを複数回使用します。ライブラリの検索に影響します。
-l それに続くオプション。

-Bグループ
動的セクションの「DT_FLAGS_1」エントリに「DF_1_GROUP」フラグを設定します。 この
ランタイムリンカが​​このオブジェクトのルックアップを処理し、その依存関係が
グループ内でのみ実行されます。 --unresolved-symbols = report-all 暗示されます。 この
オプションは、共有ライブラリをサポートするELFプラットフォームでのみ意味があります。

-Bスタティック
-dn
-非共有
-静的
共有ライブラリに対してリンクしないでください。 これは、次のようなプラットフォームでのみ意味があります
共有ライブラリがサポートされています。 このオプションのさまざまなバリエーションは、
さまざまなシステムとの互換性。 このオプションは、
コマンドライン:ライブラリの検索に影響します -l それに続くオプション。 この
オプションはまた意味します --unresolved-symbols = report-all。 このオプションは、
-共有。 そうすることは、共有ライブラリが作成されているが、すべての
ライブラリの外部参照は、静的からエントリをプルすることによって解決する必要があります
ライブラリ。

-シンボリック
共有ライブラリを作成するときは、グローバルシンボルへの参照を定義にバインドします
共有ライブラリ内(ある場合)。 通常、リンクされたプログラムが可能です
共有ライブラリに対して、共有ライブラリ内の定義をオーバーライドします。 この
オプションは、共有ライブラリをサポートするELFプラットフォームでのみ意味があります。

-シンボリック関数
共有ライブラリを作成するときは、グローバル関数シンボルへの参照をにバインドします
共有ライブラリ内の定義 (存在する場合)。 このオプションは ELF でのみ意味があります
共有ライブラリをサポートするプラットフォーム。

--dynamic-list =動的リストファイル
リンカに動的リストファイルの名前を指定します。 これは通常、次の場合に使用されます
共有ライブラリを作成して、参照するグローバルシンボルのリストを指定します
共有ライブラリ内の定義にバインドしたり、作成したりしないでください
追加する必要のあるシンボルのリストを指定するための動的にリンクされた実行可能ファイル
実行可能ファイルのシンボルテーブル。 このオプションは、ELFプラットフォームでのみ意味があります
共有ライブラリをサポートします。

動的リストの形式は、スコープとノードのないバージョンノードと同じです。
名前。 見る VERSION

--動的リストデータ
すべてのグローバルデータシンボルを動的リストに含めます。

--dynamic-list-cpp-new
C ++演算子newおよびdeleteの組み込み動的リストを提供します。 主に便利です
共有libstdc ++を構築するため。

--dynamic-list-cpp-typeinfo
C ++ランタイムタイプ識別用の組み込み動的リストを提供します。

-チェックセクション
--チェックセクションなし
リンカーに尋ねる 割り当てられたセクションアドレスをチェックして、
重複があります。 通常、リンカはこのチェックを実行し、検出された場合は
オーバーラップすると、適切なエラーメッセージが生成されます。 リンカは知っています、そして
オーバーレイのセクションを考慮します。 デフォルトの動作を復元できます
コマンドラインスイッチを使用して -チェックセクション。 セクションの重なりは通常ありません
再配置可能なリンクを確認しました。 その場合、を使用して強制的にチェックすることができます。
-チェックセクション オプションを選択します。

--copy-dt-needed-entries
--no-copy-dt-needed-entries
このオプションは、DT_NEEDEDタグによって参照されるダイナミックライブラリの処理に影響します
内部 コマンドラインに記載されているELFダイナミックライブラリ。 通常、リンカーはしません
DT_NEEDEDタグで言及されている各ライブラリの出力バイナリにDT_NEEDEDタグを追加します
入力ダイナミックライブラリ内。 と --copy-dt-needed-entries コマンドで指定
ただし、それに続くダイナミックライブラリにはDT_NEEDEDエントリがあります。
追加した。 デフォルトの動作は、次のコマンドで復元できます。 --no-copy-dt-needed-entries.

このオプションは、ダイナミックライブラリのシンボルの解像度にも影響します。
--copy-dt-needed-entries コマンドラインで言及されるダイナミックライブラリは
他のライブラリへのDT_NEEDEDタグに従って、再帰的に検索します。
出力バイナリに必要なシンボルを解決します。 ただし、デフォルト設定では、
それに続くダイナミックライブラリの検索は、ダイナミックライブラリで停止します
自体。 シンボルを解決するためにDT_NEEDEDリンクはトラバースされません。

--cref
相互参照テーブルを出力します。 リンカーマップファイルが生成されている場合、クロス
参照テーブルがマップファイルに出力されます。 それ以外の場合は、標準に印刷されます
出力。

表の形式は意図的に単純化されているため、次の方法で簡単に処理できます。
必要に応じてスクリプト。 記号は名前でソートされて印刷されます。 シンボルごとに、
ファイル名のリストが表示されます。 シンボルが定義されている場合、リストされる最初のファイルは
定義の場所。 シンボルが共通の値として定義されている場合は、すべてのファイル
これが発生する場所が次に表示されます。 最後に、シンボルを参照するファイルは次のとおりです。
リストされている。

--no-define-common
このオプションは、共通シンボルへのアドレスの割り当てを禁止します。 スクリプト
コマンド「INHIBIT_COMMON_ALLOCATION」も同じ効果があります。

  --no-define-common オプションを使用すると、アドレスを割り当てる決定を切り離すことができます
出力ファイルタイプの選択からの一般的な記号。 それ以外の場合は再配置不可
出力タイプは、共通シンボルへのアドレスの割り当てを強制します。 使用する --no-define-common
共有ライブラリから参照される共通シンボルを割り当てることができます
メインプログラムでのみアドレス指定します。 これにより、
共有ライブラリであり、間違った解決をめぐる混乱を防ぎます
専用の検索パスを持つ動的モジュールが多数ある場合に複製
ランタイムシンボル解決。

--defsym =シンボル=表現
次の式で指定された絶対アドレスを含むグローバルシンボルを出力ファイルに作成します。
表現。 このオプションは、複数を定義するために必要な回数だけ使用できます
コマンドラインの記号。 限定された形式の算術がサポートされています
表現 このコンテキストでは、XNUMX進定数または名前を指定できます。
既存の記号、または「+」と「-」を使用してXNUMX進定数を加算または減算する、または
シンボル。 より複雑な式が必要な場合は、linkerコマンドの使用を検討してください
スクリプトからの言語。 注: 間に空白があってはなりません シンボル
等号( "=")、 と 表現.

--demangle [= ]
-デマングルなし
これらのオプションは、エラーメッセージやその他のシンボル名をデマングルするかどうかを制御します
出力。 リンカーがデマングルするように指示されると、リンカーはシンボル名を
読みやすい方法:オブジェクトファイルで使用されている場合は、先頭のアンダースコアを削除します
フォーマットし、C ++のマングルされたシンボル名をユーザーが読み取れる名前に変換します。 違う
コンパイラにはさまざまなマングリングスタイルがあります。 オプションのデマングルスタイル引数は、
コンパイラに適切なデマングリングスタイルを選択するために使用されます。 リンカーは
環境変数を除いて、デフォルトでデマングル COLLECT_NO_DEMANGLE が設定されています。 これらは
オプションを使用して、デフォルトをオーバーライドできます。

-Ifile
--dynamic-linker =file
ダイナミックリンカの名前を設定します。 これは、生成するときにのみ意味があります
動的にリンクされたELF実行可能ファイル。 通常、デフォルトのダイナミックリンカは正しいです。
何をしているのかわからない限り、これを使用しないでください。

--no-dynamic-linker
実行可能ファイルを作成するときは、で使用するダイナミックリンカの要求を省略してください。
ロード時間。 これは、動的を含むELF実行可能ファイルでのみ意味があります
再配置。通常、これらを処理できるエントリポイントコードが必要です。
移転。

-致命的-警告
-致命的ではありません-警告
すべての警告をエラーとして扱います。 デフォルトの動作は、オプションを使用して復元できます
-致命的ではありません-警告.

--force-exe-サフィックス
出力ファイルに.exeサフィックスが付いていることを確認してください。

正常にビルドされた完全にリンクされた出力ファイルに「.exe」または「.dll」がない場合
接尾辞、このオプションは、リンカに出力ファイルを同じ名前のXNUMXつにコピーするように強制します
「.exe」サフィックスが付いています。 このオプションは、変更されていないUnixmakefileを
Microsoft Windowsホスト、一部のバージョンのWindowsは、イメージを実行しない限りイメージを実行しないため
「.exe」サフィックスで終わります。

--gc-セクション
--no-gc-sections
未使用の入力セクションのガベージコレクションを有効にします。 するターゲットでは無視されます
このオプションはサポートされていません。 デフォルトの動作(このガベージを実行しない)
コレクション)を指定することで復元できます --no-gc-sections コマンドラインで。

--gc-セクション シンボルを調べて使用する入力セクションを決定し、
移転。 エントリシンボルを含むセクションとを含むすべてのセクション
コマンドラインで未定義のシンボルは保持され、以下を含むセクションも保持されます。
動的オブジェクトによって参照されるシンボル。 共有ライブラリを構築する場合、
リンカは、表示されているシンボルが参照されていると想定する必要があります。 この最初のセットが
セクションが決定されると、リンカーは任意のセクションを使用済みとして再帰的にマークします
それらの再配置によって参照されます。 見る - エントリ & - 未定義.

このオプションは、部分リンクを実行するときに設定できます(オプションで有効になります) -r)。 これで
保持されるシンボルのルートは、次のいずれかによって明示的に指定する必要があります。 - エントリ or
- 未定義 オプションまたはリンカスクリプトの「ENTRY」コマンドによる。

--print-gc-sections
--no-print-gc-sections
ガベージコレクションによって削除されたすべてのセクションを一覧表示します。 リストはstderrに印刷されます。
このオプションは、ガベージコレクションが
--gc-セクション) オプション。 デフォルトの動作(次のセクションをリストしない)
削除)を指定することで復元できます --no-print-gc-sections コマンドラインで。

--印刷出力形式
デフォルトの出力形式の名前を出力します(おそらく他のコマンドラインの影響を受けます)
オプション)。 これは、「OUTPUT_FORMAT」リンカースクリプトに表示される文字列です。


--print-メモリ使用量
で作成されたメモリ領域の使用済みサイズ、合計サイズ、および使用済みサイズを印刷します。 MEMORY
指図。 これは、埋め込まれたターゲットで無料の量をすばやく確認するのに役立ちます
メモリー。 出力の形式には、地域ごとにXNUMXつの見出しとXNUMXつの行があります。 です
人間が読める形式であり、ツールで簡単に解析できます。 出力の例を次に示します。

使用メモリ領域サイズ領域サイズ%age使用
ROM:256 KB 1 MB 25.00%
RAM:32 B 2 GB 0.00%

- 助けて
コマンドラインオプションの概要を標準出力に出力して終了します。

--ターゲットヘルプ
すべてのターゲット固有のオプションの要約を標準出力に出力して終了します。

-マップ=マップファイル
ファイルへのリンクマップを印刷します マップファイル。 の説明を参照してください -M 上記のオプション。

--保持メモリなし
ld 通常、のシンボルテーブルをキャッシュすることにより、メモリ使用量よりも速度を最適化します。
メモリ内の入力ファイル。 このオプションは ld 代わりに、メモリ使用量を最適化する
必要に応じてシンボルテーブルを読み直します。 これは、次の場合に必要になる場合があります ld 不足している
大きな実行可能ファイルをリンクしている間のメモリスペース。

-いいえ-未定義
-z 定義
通常のオブジェクトファイルからの未解決のシンボル参照を報告します。 これは、
リンカは、非シンボリック共有ライブラリを作成しています。 スイッチ
-[no-] allow-shlib-未定義 未解決を報告するための動作を制御します
リンクされている共有ライブラリで見つかった参照。

--allow-複数定義
-z muldef
通常、シンボルが複数回定義されている場合、リンカーは致命的を報告します
エラー。 これらのオプションでは複数の定義が可能であり、最初の定義が使用されます。

--allow-shlib-未定義
--no-allow-shlib-未定義
共有ライブラリで未定義のシンボルを許可または禁止します。 このスイッチはに似ています
-いいえ-未定義 ただし、未定義のシンボルが
通常のオブジェクトファイルではなく、共有ライブラリ内。 方法には影響しません
通常のオブジェクトファイル内の未定義のシンボルが処理されます。

デフォルトの動作は、で参照されている未定義のシンボルのエラーを報告することです。
リンカーが実行可能ファイルの作成に使用されているが、許可する場合は共有ライブラリ
リンカが共有ライブラリの作成に使用されている場合は、それら。

で指定された共有ライブラリで未定義のシンボル参照を許可する理由
リンク時間は次のとおりです。

・リンク時に指定された共有ライブラリは、
ロード時に使用可能であるため、シンボルはロード時に実際に解決できる可能性があります。

・BeOSやHPPAなどの一部のオペレーティングシステムでは、未定義の記号が
共有ライブラリは正常です。

たとえば、BeOSカーネルは、ロード時に共有ライブラリにパッチを適用して選択します
現在のアーキテクチャに最も適した機能。 これは
たとえば、適切なmemset関数を動的に選択するために使用されます。

--no-未定義のバージョン
通常、シンボルのバージョンが未定義の場合、リンカはそれを無視します。 この
オプションは、バージョンが定義されていないシンボルを許可せず、致命的なエラーが発行されます
を代わりにお使いください。

--デフォルト-symver
バージョン管理されていないエクスポートされたシンボルのデフォルトのシンボルバージョン(soname)を作成して使用します。

--default-imported-symver
バージョン管理されていないインポートされたシンボルのデフォルトのシンボルバージョン(soname)を作成して使用します。

-- 警告の不一致
通常は ld 次の入力ファイルをリンクしようとするとエラーが発生します
何らかの理由で不一致、おそらくそれらは異なるためにコンパイルされているため
プロセッサまたはさまざまなエンディエンス用。 このオプションは ld それがすべきだと
そのような起こりうるエラーを黙って許可します。 このオプションは、注意して使用する必要があります。
リンカエラーが発生することを保証する特別なアクションを実行した場合
不適切。

--no-warn-検索不一致
通常は ld ライブラリ中に互換性のないライブラリが見つかった場合は警告が表示されます
探す。 このオプションは警告を消します。

--アーカイブなし
の効果をオフにします -- 全体アーカイブ 後続のアーカイブファイルのオプション。

--noinhibit-exec
実行可能出力ファイルは、引き続き使用できる場合は常に保持してください。 通常、リンカー
リンクプロセス中にエラーが発生した場合、出力ファイルは生成されません。 それ
エラーが発生した場合は、出力ファイルを書き込まずに終了します。

-nostdlib
コマンドラインで明示的に指定されたライブラリディレクトリのみを検索します。 図書館
リンカスクリプトで指定されたディレクトリ(で指定されたリンカスクリプトを含む)
コマンドライン)は無視されます。

--oformat =出力フォーマット
ld 複数の種類のオブジェクトファイルをサポートするように構成できます。 もしあなたの ld is
このように構成すると、 --oformat のバイナリ形式を指定するオプション
出力オブジェクトファイル。 ときでさえ ld 代替オブジェクトをサポートするように構成されている
フォーマットの場合、通常、これを指定する必要はありません。 ld を生成するように構成する必要があります
デフォルトの出力フォーマットとして、各マシンで最も一般的なフォーマット。 出力フォーマット  
テキスト文字列、BFDライブラリでサポートされている特定の形式の名前。 (あなたはできる
利用可能なバイナリ形式を一覧表示します オブジェクトダンプ -i。)スクリプトコマンド
「OUTPUT_FORMAT」は出力フォーマットを指定することもできますが、このオプションはそれをオーバーライドします。

-パイ
--pic-実行可能ファイル
位置に依存しない実行可能ファイルを作成します。 これは現在、ELFでのみサポートされています
プラットフォーム。 位置に依存しない実行可能ファイルは、その点で共有ライブラリに似ています
それらは、ダイナミックリンカによってOSが選択した仮想アドレスに再配置されます
それら(呼び出しごとに異なる可能性があります)。 通常の動的にリンクされた実行可能ファイルのように
それらは実行可能であり、実行可能ファイルで定義されたシンボルはによってオーバーライドできません
共有ライブラリ。

-qmagic
Linuxとの互換性のため、このオプションは無視されます。

-Qy このオプションは、SVR4の互換性のために無視されます。

- リラックス
-リラックスしない
マシンに依存する効果を持つオプション。 このオプションは、ごく一部でのみサポートされています
ターゲット。

一部のプラットフォームでは、 - リラックス オプションは、ターゲット固有のグローバル最適化を実行します
これは、リンカがプログラム内のアドレス指定を解決するときに可能になります。
アドレッシングモードの緩和、新しい命令の合成、短いバージョンの選択
現在の命令、および定数値の組み合わせ。

一部のプラットフォームでは、これらのリンク時間のグローバル最適化により、
結果の実行可能ファイルは不可能です。 これは松下の場合であることが知られています
MN10200およびMN10300ファミリのプロセッサ。

これがサポートされていないプラットフォームでは、 - リラックス 受け入れられますが、無視されます。

プラットフォームで - リラックス オプションが受け入れられます -リラックスしない 無効にするために使用できます
特徴。

--retain-symbols-file =ファイル名
保持する ファイルにリストされている記号 ファイル名、他のすべてを破棄します。 ファイル名
は単純なフラットファイルで、XNUMX行にXNUMXつのシンボル名が付いています。 このオプションは特に
大きなグローバルシンボルテーブルがある環境(VxWorksなど)で役立ちます
実行時のメモリを節約するために、徐々に蓄積されます。

--シンボルファイルを保持 ありません 未定義のシンボル、またはに必要なシンボルを破棄します
移転。

指定のみ可能 --シンボルファイルを保持 コマンドラインでXNUMX回。 オーバーライドします -s
& -S.

-rpath =DIR
ランタイムライブラリの検索パスにディレクトリを追加します。 これは、ELFをリンクするときに使用されます
共有オブジェクトで実行可能。 全て -rpath 引数は連結されてに渡されます
実行時に共有オブジェクトを見つけるためにそれらを使用する実行時リンカー。 NS -rpath
このオプションは、共有オブジェクトに必要な共有オブジェクトを見つけるときにも使用されます
リンクに明示的に含まれています。 の説明を参照してください -rpath-リンク オプション。 場合
-rpath ELF実行可能ファイル、環境のコンテンツをリンクする場合は使用されません
変数「LD_RUN_PATH」が定義されている場合は使用されます。

  -rpath オプションはSunOSでも使用できます。 デフォルトでは、SunOSでは、リンカーは
すべてのからランタイム検索パスを形成します -L 与えられたオプション。 もし -rpath オプション
が使用される場合、ランタイム検索パスは、 -rpath オプションは、
無視して -L オプション。 これは、多くの機能を追加するgccを使用する場合に役立ちます。 -L
NFSマウントされたファイルシステムにある可能性のあるオプション。

他のELFリンカーとの互換性のために、 -R オプションの後にディレクトリが続きます
ファイル名ではなく、名前として扱われます -rpath オプションを選択します。

-rpath-link =DIR
ELFまたはSunOSを使用する場合、XNUMXつの共有ライブラリに別のライブラリが必要になる場合があります。 これは、
「ld-shared」リンクには、入力ファイルのXNUMXつとして共有ライブラリが含まれています。

非共有、非再配置可能を実行しているときにリンカがそのような依存関係に遭遇したとき
リンク、それは自動的に必要な共有ライブラリを見つけてそれを含めようとします
リンクに明示的に含まれていない場合。 そのような場合、 -rpath-リンク オプション
検索するディレクトリの最初のセットを指定します。 NS -rpath-リンク オプションで指定できます
で区切られた名前のリストを指定することによる一連のディレクトリ名
コロン、または複数回出現することによって。

このオプションは、次のような検索パスを上書きするため、注意して使用する必要があります。
共有ライブラリにハードコンパイルされています。 そのような場合に使用することが可能です
意図せずに、ランタイムリンカーが行う検索パスとは異なる検索パス。

リンカは、次の検索パスを使用して、必要な共有ライブラリを検索します。

1.によって指定されたディレクトリ -rpath-リンク オプション。

2.によって指定されたディレクトリ -rpath オプション。 の違い -rpath &
-rpath-リンク によって指定されたディレクトリです -rpath オプションはに含まれています
実行可能で実行時に使用されますが、 -rpath-リンク オプションは有効です
リンク時に。 検索 -rpath このように、ネイティブリンカーと
で構成されたクロスリンカー --with-sysroot オプションを選択します。

3. ELFシステムでは、ネイティブリンカーの場合、 -rpath & -rpath-リンク オプションは
使用しない場合は、環境変数「LD_RUN_PATH」の内容を検索してください。

4. SunOSでは、 -rpath オプションが使用されなかった場合、指定されたディレクトリを検索します
-L オプション。

5.ネイティブリンカーの場合は、環境変数の内容を検索します
「LD_LIBRARY_PATH」。

6.ネイティブELFリンカーの場合、共有の「DT_RUNPATH」または「DT_RPATH」内のディレクトリ
ライブラリは、必要な共有ライブラリを検索します。 「DT_RPATH」エントリは次のとおりです。
「DT_RUNPATH」エントリが存在する場合は無視されます。

7.デフォルトのディレクトリ、通常は / lib & / usr / lib.

8. ELFシステムのネイティブリンカーの場合、ファイルの場合 /etc/ld.so.conf 存在する、リスト
そのファイルで見つかったディレクトリの数。

必要な共有ライブラリが見つからない場合、リンカは警告を発行し、
リンクを続行します。

-共有
-共有可能
共有ライブラリを作成します。 これは現在、ELF、XCOFF、SunOSでのみサポートされています
プラットフォーム。 SunOSでは、リンカは次の場合に共有ライブラリを自動的に作成します。 -e
オプションは使用されず、リンクに未定義のシンボルがあります。

--sort-common
--sort-common = ascending
--sort-common = descending
このオプションは ld 昇順または昇順の配置によって一般的なシンボルを並べ替える
適切な出力セクションに配置するときの降順。 象徴
考慮されるアラインメントは、XNUMXバイト以上、XNUMXバイト、XNUMXバイト、XNUMXバイト、および
XNUMXバイト。 これは、配置の制約によるシンボル間のギャップを防ぐためです。 いいえの場合
ソート順を指定し、降順を想定しています。

--sort-section = name
このオプションは、リンカーのすべてのワイルドカードセクションパターンに「SORT_BY_NAME」を適用します
スクリプト。

--sort-section = alignment
このオプションは、「SORT_BY_ALIGNMENT」を内のすべてのワイルドカードセクションパターンに適用します。
リンカースクリプト。

--split-by-file [=サイズ]
そして --再配置による分割 ただし、入力ファイルごとに新しい出力セクションを作成します。
サイズ が達成された。 サイズ 指定しない場合、デフォルトのサイズは1です。

--split-by-reloc [=カウント]
出力ファイルに追加のセクションを作成して、の単一の出力セクションがないようにします。
ファイルには以上のものが含まれています カウント 移転。 これは、巨大な生成時に役立ちます
COFFオブジェクトを使用して特定のリアルタイムカーネルにダウンロードするための再配置可能なファイル
ファイル形式; COFFは65535回でXNUMXを超える再配置を表すことができないため
セクション。 これは、機能しないオブジェクトファイル形式では機能しないことに注意してください
任意のセクションをサポートします。 リンカは個々の入力セクションを分割しません
再配布の場合、単一の入力セクションに カウント 移転
XNUMXつの出力セクションには、その数の再配置が含まれます。 カウント デフォルトの値は
32768.

-統計
実行など、リンカーの操作に関する統計を計算して表示します
時間とメモリの使用量。

--sysroot =ディレクトリにジョブを開始します。
  ディレクトリにジョブを開始します。 sysrootの場所として、configure-timeのデフォルトをオーバーライドします。
このオプションは、を使用して構成されたリンカーでのみサポートされます。 --with-sysroot.

-従来の形式
一部のターゲットでは、 ld いくつかの出力とはいくつかの点で異なります
既存のリンカー。 このスイッチは要求します ld 代わりに従来の形式を使用します。

たとえば、SunOSでは、 ld シンボル文字列テーブル内の重複するエントリを結合します。 この
完全なデバッグ情報を含む出力ファイルのサイズを30以上削減できます
パーセント。 残念ながら、SunOSの「dbx」プログラムは結果のプログラムを読み取ることができません
(「gdb」には問題はありません)。 NS -従来の形式 スイッチは教えます ld 結合しない
重複するエントリ。

--section-start =セクション名=ORG
出力ファイル内の次の絶対アドレスでセクションを見つけます。 ORG。 You may useあなたは使用することができます
コマンド内の複数のセクションを見つけるために必要な回数このオプション
ライン。 ORG 単一のXNUMX進整数である必要があります。 他のリンカーとの互換性のために、
先頭を省略できます 0x 通常、XNUMX進値に関連付けられます。 注: そこ
間に空白があってはなりません セクション名、等号( "=")、 と ORG.

-Tbss =ORG
-Tdata =ORG
-Ttext =ORG
と同じ --セクション開始、「。bss」、「。data」、または「.text」を セクション名.

-Ttext-segment =ORG
ELF実行可能ファイルを作成すると、テキストの最初のバイトのアドレスが設定されます
セグメント。

-Trodata-segment =ORG
読み取り専用データがあるターゲットのELF実行可能ファイルまたは共有オブジェクトを作成する場合
実行可能テキストとは別の独自のセグメントにあり、のアドレスを設定します
読み取り専用データセグメントの最初のバイト。

-Tldata-segment =ORG
x86-64ミディアムメモリモデル用のELF実行可能ファイルまたは共有オブジェクトを作成する場合、
ldataセグメントの最初のバイトのアドレスを設定します。

--unresolved-symbols =方法
未解決のシンボルの処理方法を決定します。 の可能な値はXNUMXつあります
方法:

全無視
未解決のシンボルは報告しないでください。

レポート-すべて
未解決のシンボルをすべて報告します。 これがデフォルトです。

オブジェクトファイルを無視する
共有ライブラリに含まれている未解決のシンボルを報告しますが、無視します
それらが通常のオブジェクトファイルからのものである場合。

共有ライブラリを無視する
通常のオブジェクトファイルからの未解決のシンボルを報告しますが、次の場合は無視します
それらは共有ライブラリから来ています。 これは、ダイナミックを作成するときに役立ちます
バイナリであり、参照する必要があるすべての共有ライブラリが知られています
リンカのコマンドラインに含まれています。

共有ライブラリ自体の動作は、
-[no-] allow-shlib-未定義 オプションを選択します。

通常、リンカは、報告された未解決のシンボルごとにエラーメッセージを生成します。
しかし、オプション -警告-未解決-記号 これを警告に変更できます。

--dll-冗長
--verbose [=]
のバージョン番号を表示する ld サポートされているリンカーエミュレーションを一覧表示します。 画面
どの入力ファイルを開くことができるか、できないか。 によって使用されているリンカースクリプトを表示します
リンカー。 オプションの場合 引数> 1、プラグインシンボルステータスも
表示されます。

--version-script =バージョン-スクリプトファイル
リンカにバージョンスクリプトの名前を指定します。 これは通常、次の場合に使用されます
バージョンに関する追加情報を指定するための共有ライブラリの作成
作成中のライブラリの階層。 このオプションはELFでのみ完全にサポートされています
共有ライブラリをサポートするプラットフォーム。 見る VERSION。 部分的にサポートされています
PEプラットフォーム。バージョンスクリプトを使用して、自動エクスポートでシンボルの可視性をフィルタリングできます。
モード:マークされた記号 ローカル バージョンスクリプトではエクスポートされません。

-警告-共通
共通のシンボルが別の共通のシンボルまたはシンボルと組み合わされたときに警告します
意味。 Unixリンカーは、これをややずさんな方法で実行できますが、一部のリンカーは
他のオペレーティングシステムはそうではありません。 このオプションを使用すると、潜在的な問題を見つけることができます
グローバルシンボルの組み合わせから。 残念ながら、一部のCライブラリはこの方法を使用しているため、
プログラムだけでなく、ライブラリのシンボルについても警告が表示される場合があります。

ここではCの例で示されている、XNUMX種類のグローバルシンボルがあります。

int型 i = 1;
出力ファイルの初期化されたデータセクションに入る定義。

外部 int型 i;
スペースを割り当てない未定義の参照。 どちらかが必要です
どこかの変数の定義または共通の記号。

int型 i;
一般的なシンボル。 変数に(XNUMXつ以上の)共通シンボルしかない場合、
出力ファイルの初期化されていないデータ領域に入ります。 リンカーはマージします
同じ変数の複数の共通シンボルをXNUMXつのシンボルに。 彼らがいる場合
さまざまなサイズの中で、最大のサイズを選択します。 リンカーは共通のシンボルになります
同じ変数の定義がある場合は、宣言に入れます。

  -警告-共通 オプションはXNUMX種類の警告を生成できます。 各警告は
一対の線:最初は出会ったばかりのシンボルを表し、XNUMX番目は出会ったばかりのシンボルを表します
同じ名前で遭遇した前のシンボルを説明します。 XNUMXつの一方または両方
シンボルは一般的なシンボルになります。

1.すでに定義があるので、共通のシンボルを参照に変える
シンボルのために。

(( ):警告: `の共通'
定義によりオーバーライド
(( ):警告:ここで定義

2.共通のシンボルを参照に変えるのは、後の定義が
シンボルに遭遇しました。 これは前のケースと同じですが、
シンボルは異なる順序で検出されます。

(( ):警告: `の定義'
共通のオーバーライド
(( ):警告:一般的なものはここにあります

3.共通シンボルを以前の同じサイズの共通シンボルとマージします。

(( ):警告:複数の共通
`の'
(( ):警告:以前の共通点はここにあります

4.共通シンボルを以前のより大きな共通シンボルとマージします。

(( ):警告: `の共通'
より大きなコモンによってオーバーライドされます
(( ):警告:より大きな共通点はここにあります

5.共通シンボルを以前の小さい共通シンボルとマージします。 これは同じです
前の場合と同じですが、シンボルが別の場所で検出される点が異なります
オーダー。

(( ):警告: `の共通'
小さいコモンをオーバーライドする
(( ):警告:小さいコモンはここにあります

-警告-コンストラクター
グローバルコンストラクターが使用されている場合は警告します。 これは、いくつかのオブジェクトファイルにのみ役立ちます
フォーマット。 COFFやELFなどの形式の場合、リンカはグローバルの使用を検出できません
コンストラクター。

--warn-multiple-gp
出力ファイルに複数のグローバルポインタ値が必要な場合に警告します。 これだけです
Alphaなどの特定のプロセッサにとって意味があります。 具体的には、一部のプロセッサ
大きな値の定数を特別なセクションに配置します。 特殊レジスター(グローバル
ポインタ)はこのセクションの中央を指しているため、定数をロードできます
ベースレジスタ相対アドレッシングモードを介して効率的に。 ベースのオフセット以来-
レジスタ相対モードは固定されており、比較的小さい(たとえば、16ビット)ため、
定数プールの最大サイズ。 したがって、大規模なプログラムでは、多くの場合、
可能なすべてに対処できるようにするために、複数のグローバルポインタ値を使用する
定数。 このオプションを使用すると、このケースが発生するたびに警告が発行されます。

-警告-XNUMX回
参照するモジュールごとにXNUMX回ではなく、未定義のシンボルごとにXNUMX回だけ警告します。
ボーマンは

--warn-section-align
アライメントのために出力セクションのアドレスが変更された場合に警告します。 通常、
配置は入力セクションによって設定されます。 住所は次の場合にのみ変更されます
明示的に指定されていません。 つまり、「SECTIONS」コマンドで開始が指定されていない場合
セクションのアドレス。

--warn-shared-textrel
リンカがDT_TEXTRELを共有オブジェクトに追加した場合に警告します。

--warn-alternate-em
オブジェクトに代替ELFマシンコードがある場合に警告します。

-警告-未解決-記号
リンカが未解決のシンボルを報告する場合(オプションを参照)
-未解決-シンボル)通常はエラーが発生します。 このオプションはそれを作ります
代わりに警告を生成します。

-エラー-未解決-シンボル
これにより、リンカがレポートしているときにエラーを生成するというリンカのデフォルトの動作が復元されます。
未解決のシンボル。

-- 全体アーカイブ
コマンドラインの後に記載されているアーカイブごとに -- 全体アーカイブ オプション、
検索するのではなく、リンク内のアーカイブ内のすべてのオブジェクトファイルを含めます
必要なオブジェクトファイルのアーカイブ。 これは通常、アーカイブファイルを作成するために使用されます
共有ライブラリに入れ、すべてのオブジェクトを結果の共有ライブラリに含めるように強制します
図書館。 このオプションは複数回使用できます。

gccからこのオプションを使用する場合のXNUMXつの注意:最初に、gccはこのオプションについて知りません。
だからあなたは使用する必要があります -Wl、-アーカイブ全体。 第二に、使用することを忘れないでください
-Wl、-no-whole-archive gccは独自のリストを追加するため、アーカイブのリストの後に
リンクへのアーカイブの数であり、このフラグがそれらにも影響を与えたくない場合があります。

--wrap =シンボル
ラッパー関数を使用する シンボル。 未定義の参照 シンボル 解決されます
ラップします_シンボル"。 「__real_」への未定義の参照シンボル" に解決されます
シンボル.

これは、システム関数のラッパーを提供するために使用できます。 ラッパー関数
「__wrap_」と呼ばれるべきですシンボル"。 システム関数を呼び出したい場合は、
「__real_シンボル".

簡単な例を次に示します。

無効*
__wrap_malloc(size_t c)
{
printf( "mallocが%zu \ nで呼び出されました"、c);
return __real_malloc(c);
}

を使用して他のコードをこのファイルにリンクする場合 - 包む malloc関数、その後、「malloc」へのすべての呼び出し
代わりに、関数「__wrap_malloc」を呼び出します。 の「__real_malloc」の呼び出し
「__wrap_malloc」は、実際の「malloc」関数を呼び出します。

「__real_malloc」関数も提供して、
- 包む オプションは成功します。 これを行う場合、あなたはの定義を置くべきではありません
「__wrap_malloc」と同じファイル内の「__real_malloc」; そうした場合、アセンブラは
リンカが呼び出しを「malloc」にラップする前に、呼び出しを解決します。

--ええ-フレーム-hdr
「.eh_frame_hdr」セクションとELF「PT_GNU_EH_FRAME」セグメントヘッダーの作成を要求します。

--no-ld-generated-unwind-info
リンカで生成されたコードセクションの「.eh_frame」アンワインド情報の作成をリクエストします。
PLT。 リンカが生成したアンワインド情報がサポートされている場合、このオプションはデフォルトでオンになっています。

--enable-new-dtags
--新しい dtags を無効にする
このリンカは、ELFで新しい動的タグを作成できます。 しかし、古いELFシステムはそうではないかもしれません
それらを理解します。 指定した場合 --enable-new-dtags、新しい動的タグは
必要に応じて作成され、古い動的タグは省略されます。 指定した場合
--新しい dtags を無効にする、新しい動的タグは作成されません。 デフォルトでは、新しいダイナミック
タグは作成されません。 これらのオプションはELFシステムでのみ使用可能であることに注意してください。

--hash-size =
リンカのハッシュテーブルのデフォルトサイズをに近い素数に設定します .
この値を増やすと、リンカーがその実行にかかる時間を短縮できます。
リンカのメモリ要件を増やすことを犠牲にして、タスク。 同様に
この値を減らすと、速度を犠牲にしてメモリ要件を減らすことができます。

--hash-style =
リンカのハッシュテーブルのタイプを設定します。 従来のELFの場合は「sysv」のいずれかになります
「.hash」セクション、新しいスタイルのGNUの場合は「gnu」、両方の場合は「.gnu.hash」セクションまたは「both」
従来のELF「.hash」および新しいスタイルのGNU「.gnu.hash」ハッシュテーブル。 デフォルトは「sysv」です。

--compress-debug-sections = none
--compress-debug-sections = zlib
--compress-debug-sections = zlib-gnu
--compress-debug-sections = zlib-gabi
ELFプラットフォームでは、これらのオプションは、DWARFデバッグセクションを使用して圧縮する方法を制御します
zlib。 --compress-debug-sections = none DWARFデバッグセクションを圧縮しません。
--compress-debug-sections = zlib-gnu DWARFデバッグセクションを圧縮し、debugの名前を変更します
で始まるセクション名 .zdebug 。デバッグ. --compress-debug-sections = zlib
& --compress-debug-sections = zlib-gabi DWARFデバッグセクションを次のように圧縮します
ELFABIからのSHF_COMPRESSED。 デフォルトの動作は、
関連するターゲットと、ツールチェーンの構築に使用される構成オプション。 デフォルト
リンカからの出力を調べることで判断できます - 助けて オプションを選択します。

--メモリのオーバーヘッドを減らす
このオプションは、リンクを犠牲にして、実行時のメモリ要件を削減します
速度。 これは、リンクマップファイルの古いO(n ^ 2)アルゴリズムを選択するために導入されました
生成のために約40%多くのメモリを使用する新しいO(n)アルゴリズムではなく
シンボルストレージ。

スイッチのもう1021つの効果は、デフォルトのハッシュテーブルサイズをXNUMXに設定することです。
リンカの実行時間を長くするという犠牲を払って、再びメモリを節約します。 これは行われません
ただし、 -ハッシュサイズ スイッチが使用されています。

  --メモリのオーバーヘッドを減らす スイッチは、他のトレードオフを有効にするためにも使用できます。
リンカの将来のバージョン。

--ビルド ID
--build-id =
「.note.gnu.build-id」ELFノートセクションまたは「.buildid」COFFの作成をリクエストします
セクション。 メモの内容は、このリンクされたファイルを識別する一意のビットです。
128個のランダムビットを使用する場合は「uuid」、1ビットのSHA160ハッシュを使用する場合は「sha1」にすることができます。
出力コンテンツの標準部分である「md5」は、128ビットのMD5ハッシュを使用します。
出力コンテンツの規範的な部分、または「0xhexstring」 選択したビット文字列を使用するには
偶数のXNUMX進数(「-」と「:」の間の文字)として指定されます
数字のペアは無視されます)。 もしも 省略した場合は「sha1」を使用します。

「md5」スタイルと「sha1」スタイルは、常に同じである識別子を生成します。
同一の出力ファイルですが、同一でないすべての出力ファイルの中で一意になります。 です
ファイルの内容のチェックサムとして比較されることを意図していません。 リンクされたファイルは
後で他のツールによって変更されますが、元のツールを識別するビルドIDビット文字列
リンクされたファイルは変更されません。

「なし」を渡す 以前の「--build-id」オプションの設定を無効にします
コマンドライン。

i386PEリンカーは -共有 オプション。これにより、出力は
通常の実行可能ファイルの代わりにダイナミックリンクライブラリ(DLL)。 名前を付ける必要があります
このオプションを使用すると、「*。dll」が出力されます。 さらに、リンカーは完全にサポートします
標準の「* .def」ファイル。オブジェクトのようにリンカのコマンドラインで指定できます。
ファイル(実際には、シンボルをエクスポートするアーカイブの前に配置して、シンボルが確実に取得されるようにする必要があります。
通常のオブジェクトファイルと同じようにリンクされます)。

すべてのターゲットに共通のオプションに加えて、i386PEリンカーは追加のサポートを提供します
i386PEターゲットに固有のコマンドラインオプション。 値を取るオプション
スペースまたは等号のいずれかで値から区切ることができます。

--add-stdcall-alias
指定されている場合、stdcallサフィックス(@nn)はそのまま、また
接尾辞が削除されました。 [このオプションは、リンカーのi386PEターゲットポートに固有です]

--ベースファイル file
  file すべてのベースアドレスを保存するファイルの名前として
DLLを生成するために必要な再配置 dllツール。 [これはi386PE固有です
オプション]

--dll
通常の実行可能ファイルの代わりにDLLを作成します。 使用することもできます -共有 またはを指定します
指定された「.def」ファイルの「LIBRARY」。 [このオプションは、対象となるi386PEに固有のものです
リンカーのポート]

--長いセクション名を有効にする
--長いセクション名を無効にする
COFFオブジェクト形式のPEバリアントは、次の使用を許可する拡張機能を追加します。
セクション名がXNUMX文字を超える場合、COFFの通常の制限。 デフォルトでは、
完全にリンクされた実行可能イメージでは許可されないため、これらの名前はオブジェクトファイルでのみ許可されます
長い名前をサポートするために必要なCOFF文字列テーブルを実行します。 GNU拡張として、
実行可能イメージでも使用できるようにすることも、(おそらく
無意味です!)これらのXNUMXつのオプションを使用して、オブジェクトファイルでそれを禁止します。 実行可能
これらの長いセクション名で生成された画像は、わずかに非標準であり、
それらは文字列テーブルを実行し、非GNUで調べると混乱する出力を生成する可能性があります
ファイルビューアやダンパーなどのPE対応ツール。 ただし、GDBは
実行可能ファイル内のDwarf-2デバッグ情報セクションを検索するためのPEの長いセクション名
実行時のイメージ。したがって、コマンドラインでどちらのオプションも指定されていない場合は、 ld 意志
長いセクション名を有効にして、デフォルトの技術的に正しい動作をオーバーライドします。
実行可能イメージのリンク中にデバッグ情報の存在を検出したとき
シンボルを削除しません。 [このオプションは、リンカーのすべてのPEターゲットポートに有効です]

--enable-stdcall-fixup
--disable-stdcall-fixup
リンクが解決できないシンボルを見つけると、「ファジー」を実行しようとします。
の形式のみが異なる別の定義済みシンボルを探すことによる「リンク」
シンボル名(cdeclとstdcall)であり、一致にリンクすることでそのシンボルを解決します。
たとえば、未定義のシンボル「_foo」が関数「_foo @ 12」にリンクされている可能性があります。
未定義のシンボル「_bar @ 16」が関数「_bar」にリンクされている可能性があります。 いつ
リンカはこれを行い、通常はリンクに失敗するはずだったので、警告を出力します。
ただし、サードパーティのdllから生成されたインポートライブラリには、この機能が必要な場合があります
使えるように。 指定した場合 --enable-stdcall-fixup、この機能は完全に有効になっています
警告は印刷されません。 指定した場合 --disable-stdcall-fixup、この機能は
無効になり、そのような不一致はエラーと見なされます。 [このオプションは
リンカのi386PEターゲットポート]

--先頭のアンダースコア
--先頭にアンダースコアなし
ほとんどのターゲットの場合、デフォルトのシンボルプレフィックスはアンダースコアであり、ターゲットの
説明。 このオプションにより、デフォルトのアンダースコアを無効/有効にすることができます
シンボルプレフィックス。

--すべてのシンボルをエクスポート
指定した場合、DLLの構築に使用されるオブジェクト内のすべてのグローバルシンボルは、によってエクスポートされます。
DLL。 それ以外の場合はエクスポートされない場合は、これがデフォルトであることに注意してください
シンボル。 シンボルがDEFファイルを介して明示的にエクスポートされるか、暗黙的にエクスポートされる場合
関数属性を介して、デフォルトでは、このオプションがない限り、他には何もエクスポートされません。
与えられます。 記号「DllMain @ 12」、「DllEntryPoint @ 0」、
「DllMainCRTStartup @ 12」、および「impure_ptr」は自動的にエクスポートされません。 また、
他のDLLからインポートされたシンボルは再エクスポートされず、指定するシンボルも再エクスポートされません。
「_head_」で始まる、または「_head_」で終わるDLLの内部レイアウト
「_iname」。 さらに、「libgcc」、「libstd ++」、「libmingw32」、または「libmingwXNUMX」からの記号はありません。
「crtX.o」がエクスポートされます。 名前が「__rtti_」または「__builtin_」で始まる記号
C ++ DLLを支援するために、エクスポートされません。 最後に、の広範なリストがあります
cygwin-エクスポートされないプライベートシンボル(明らかに、これはビルド時に適用されます
cygwinターゲットのDLL)。 これらのcygwin-excludesは次のとおりです: "_ cygwin_dll_entry @ 12"、
"_cygwin_crt0_common @ 8"、 "_ cygwin_noncygwin_dll_entry @ 12"、 "_ fmode"、 "_ impure_ptr"、
"cygwin_attach_dll"、 "cygwin_premain0"、 "cygwin_premain1"、 "cygwin_premain2"、
「cygwin_premain3」、および「environ」。 [このオプションは、対象となるi386PEに固有のものです
リンカーのポート]

-除外-記号 シンボル,シンボル、...
自動的にエクスポートされないシンボルのリストを指定します。 象徴
名前はコンマまたはコロンで区切ることができます。 [このオプションはi386PEに固有です
リンカーのターゲットポート]

--すべてのシンボルを除外
シンボルを自動的にエクスポートしないことを指定します。 [このオプションは
リンカのi386PEターゲットポート]

--ファイル配置
ファイルの配置を指定します。 ファイル内のセクションは常にファイルオフセットで始まります
これはこの数の倍数です。 これはデフォルトで512になります。[このオプションは特定のものです
リンカのi386PEターゲットポートへ]

- ヒープ リザーブ
- ヒープ リザーブ,コミット
として使用するために予約(およびオプションでコミット)するメモリのバイト数を指定します
このプログラムのヒープ。 デフォルトは1MBの予約済み、4Kのコミット済みです。 [このオプションは
リンカのi386PEターゲットポートに固有]

--画像ベース
  プログラムまたはdllのベースアドレスとして。 これは最低のメモリです
プログラムまたはdllがロードされるときに使用される場所。 する必要性を減らすために
dllを再配置してパフォーマンスを向上させるには、それぞれに一意のベースアドレスを設定する必要があります
他のdllと重複しないでください。 実行可能ファイルのデフォルトは0x400000であり、
dllの場合は0x10000000。 [このオプションは、のi386PEターゲットポートに固有です。
リンカ]

--キルアット
指定されている場合、stdcallサフィックス(@nn)シンボルが削除される前にシンボルから削除されます
エクスポートされました。 [このオプションは、リンカーのi386PEターゲットポートに固有です]

--ラージアドレス対応
指定した場合、COFFヘッダーの「特性」フィールドの適切なビットが設定されます
この実行可能ファイルが2ギガバイトを超える仮想アドレスをサポートしていることを示します。
これは、/ 3GBまたは/ USERVA =と組み合わせて使用​​する必要があります メガバイトスイッチイン
BOOT.INIの「[オペレーティングシステム]」セクション。 それ以外の場合、このビットは効果がありません。
[このオプションは、リンカーのPEターゲットポートに固有です]

--ラージアドレス対応を無効にする
以前の効果を元に戻します --ラージアドレス対応 オプション。 これは、次の場合に役立ちます
--ラージアドレス対応 常にコンパイラドライバ(Cygwin gccなど)によって設定され、
実行可能ファイルは、2ギガバイトを超える仮想アドレスをサポートしていません。 [このオプション
リンカのPEターゲットポートに固有です]

--主要なイメージ バージョン
「画像バージョン」のメジャー番号を設定します。 デフォルトは1です。[このオプションは
リンカのi386PEターゲットポートに固有]

--メジャー OS バージョン
「OSバージョン」のメジャー番号を設定します。 デフォルトは4です。[このオプションは特定のものです
リンカのi386PEターゲットポートへ]

--メジャー サブシステム バージョン
「サブシステムバージョン」のメジャー番号を設定します。 デフォルトは4です。[このオプションは
リンカのi386PEターゲットポートに固有]

-マイナーイメージバージョン
「画像バージョン」のマイナー番号を設定します。 デフォルトは0です。[このオプションは
リンカのi386PEターゲットポートに固有]

-マイナー-os-バージョン
「OSバージョン」のマイナー番号を設定します。 デフォルトは0です。[このオプションは特定のものです
リンカのi386PEターゲットポートへ]

-マイナーサブシステムバージョン
「サブシステムバージョン」のマイナー番号を設定します。 デフォルトは0です。[このオプションは
リンカのi386PEターゲットポートに固有]

-- 出力定義 file
リンカがファイルを作成します file これには、対応するDEFファイルが含まれます
リンカが生成しているDLL。 このDEFファイル(「* .def」と呼ばれる必要があります)は、
「dlltool」を使用してインポートライブラリを作成するために使用するか、への参照として使用できます。
自動的または暗黙的にエクスポートされたシンボル。 [このオプションはi386PEに固有です
リンカーのターゲットポート]

--out-implib file
リンカがファイルを作成します file これには、に対応するインポートライブラリが含まれます
リンカが生成しているDLL。 このインポートライブラリ(「* .dll.a」または
「* .a」は、生成されたDLLに対してクライアントをリンクするために使用できます。 この振る舞いはそれを作ります
別の「dlltool」インポートライブラリの作成手順をスキップすることができます。 [このオプションは
リンカのi386PEターゲットポートに固有]

--enable-auto-image-base
--enable-auto-image-base =
DLLのイメージベースを自動的に選択します。オプションでベースから開始します ,
「--image-base」引数を使用して指定されていない限り。 生成されたハッシュを使用する
dllnameから、DLLごとに一意のイメージベースを作成し、メモリ内の衝突と
プログラムの実行を遅らせる可能性のある再配置は回避されます。 [このオプションは特定のものです
リンカのi386PEターゲットポートへ]

--自動イメージベースを無効にする
一意の画像ベースを自動的に生成しないでください。 ユーザー指定がない場合
次に、イメージベース( "--image-base")は、プラットフォームのデフォルトを使用します。 [このオプションは特定のものです
リンカのi386PEターゲットポートへ]

--dll-検索プレフィックス 文字列
インポートライブラリなしでdllに動的にリンクする場合は、
「」 「lib」よりも「.dll」 .dll」。この動作により、
さまざまな「サブプラットフォーム」用に構築されたDLLを簡単に区別:ネイティブ、cygwin、
uwin、pwなど。たとえば、cygwin DLLは通常、「-dll-search-prefix = cyg」を使用します。
[このオプションは、リンカーのi386PEターゲットポートに固有です]

--自動インポートを有効にする
DLLからのDATAインポートのために、「_ symbol」から「__imp__symbol」への高度なリンクを実行します。
インポートライブラリを構築するときに必要なサンクシンボルを作成します
それらのDATAエクスポート。 注:「auto-import」拡張子を使用すると、テキストが表示されます
書き込み可能にする画像ファイルのセクション。 これはPE-COFFに準拠していません
Microsoftが発行したフォーマット仕様。

注-「auto-import」拡張機能を使用すると、読み取り専用データも発生します。
通常、.rdataセクションに配置され、.dataセクションに配置されます
代わりは。 これは、説明されているconstsの問題を回避するためです。
ここで: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html

'auto-import'を使用すると、通常は '正常に機能します'-しかし、これが表示される場合があります
メッセージ:

「変数」は自動インポートできません。ldのドキュメントをお読みください
詳細については、「-enable-auto-import」を参照してください。」

このメッセージは、一部の(サブ)式が最終的にによって指定されたアドレスにアクセスしたときに発生します。
32つの定数の合計(WinXNUMXインポートテーブルではXNUMXつしか使用できません)。 これが発生するインスタンス
DLLからインポートされた構造体変数のメンバーフィールドへのアクセスが含まれる場合があります。
また、DLLからインポートされた配列変数への定数インデックスを使用します。 どれでも
マルチワード変数(配列、構造体、long longなど)がこのエラー状態を引き起こす可能性があります。
ただし、問題のあるエクスポートされた変数の正確なデータ型に関係なく、ldは
常にそれを検出し、警告を発して終了します。

データ型に関係なく、この問題に対処する方法はいくつかあります。
エクスポートされた変数:

XNUMXつの方法は、-enable-runtime-pseudo-relocスイッチを使用することです。 これはのタスクを残します
ランタイム環境用にクライアントコードの参照を調整するため、このメソッドは機能します
ランタイム環境がこの機能をサポートしている場合のみ。

XNUMX番目の解決策は、「定数」のXNUMXつを変数にすることです。つまり、
コンパイル時に不明で最適化できません。 アレイの場合、XNUMXつの可能性があります。
a)インデックス作成者(配列のアドレス)を変数にする、またはb)「定数」インデックスを作成する
変数。 したがって:

externタイプextern_array [];
extern_array [1]->
{揮発性タイプ* t = extern_array; t [1]}

or

externタイプextern_array [];
extern_array [1]->
{volatile int t = 1; extern_array [t]}

構造体(および他のほとんどのマルチワードデータ型)の場合、唯一のオプションは
構造体自体(またはlong long、または...)変数:

extern 構造体 extern_struct;
extern_struct.field->
{volatile struct s * t =&extern_struct; t->フィールド}

or

externlonglongextern_ll;
extern_ll->
{volatile long long * local_ll =&extern_ll; * local_ll}

この問題に対処するXNUMX番目の方法は、「自動インポート」を中止することです。
問題のある記号を「__declspec(dllimport)」でマークします。 しかし、実際には
DLLを構築しているかどうかを示すために、コンパイル時の#definesを使用する必要があります。
DLLにリンクするクライアントコードを構築する、または単に静的に構築/リンクする
図書館。 '直接を解決するさまざまな方法の間で選択を行う際に
一定のオフセットを伴うアドレスの問題については、一般的な実際の使用法を検討する必要があります。

オリジナル:

--foo.h
extern int arr [];
--foo.c
#include "foo.h"
void main(int argc、char ** argv){
printf( "%d \ n"、arr [1]);
}

ソリューション1:

--foo.h
extern int arr [];
--foo.c
#include "foo.h"
void main(int argc、char ** argv){
/ *この回避策はwin32とcygwin用です。 「最適化」しないでください* /
volatile int * parr = arr;
printf( "%d \ n"、parr [1]);
}

ソリューション2:

--foo.h
/ *注:自動エクスポートが想定されています(__declspec(dllexport)なし)* /
#if(defined(_WIN32)|| defined(__ CYGWIN __))&& \
!(defined(FOO_BUILD_DLL)|| defined(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
#その他
#FOO_IMPORT を定義
#endif
extern FOO_IMPORT int arr [];
--foo.c
#include "foo.h"
void main(int argc、char ** argv){
printf( "%d \ n"、arr [1]);
}

この問題を回避するXNUMX番目の方法は、ライブラリを再コーディングして機能を使用することです。
問題のある変数のデータインターフェイスではなくインターフェイス(例: set_foo() &
get_foo() アクセサ関数)。 [このオプションはi386PEターゲットポートに固有です
リンカーの]

--自動インポートを無効にする
DATAの「_symbol」から「__imp__symbol」への高度なリンクを試みないでください
DLLからインポートします。 [このオプションは、のi386PEターゲットポートに固有です。
リンカ]

--enable-runtime-pseudo-relocを有効にする
コードに--enable-auto-importセクションで説明されている式が含まれている場合、つまり、
ゼロ以外のオフセットでDLLからDATAをインポートすると、このスイッチは次のベクトルを作成します。
ランタイム環境で調整に使用できる「ランタイム疑似再配置」
クライアントコード内のそのようなデータへの参照。 [このオプションはi386PEに固有です
リンカーのターゲットポート]

--disable-runtime-pseudo-reloc
DLLからのゼロ以外のオフセットDATAインポートの疑似再配置を作成しないでください。 [この
オプションは、リンカーのi386PEターゲットポートに固有です]

--enable-extra-pe-debug
自動インポートシンボルサンクに関連する追加のデバッグ情報を表示します。 [このオプションは
リンカのi386PEターゲットポートに固有]

--セクションの配置
セクションの配置を設定します。 メモリ内のセクションは、常に次のアドレスで始まります
この数の倍数です。 デフォルトは0x1000です。 [このオプションは、
リンカのi386PEターゲットポート]

- スタック リザーブ
- スタック リザーブ,コミット
として使用するために予約(およびオプションでコミット)するメモリのバイト数を指定します
このプログラムのスタック。 デフォルトは2MBの予約済み、4Kのコミット済みです。 [このオプションは
リンカのi386PEターゲットポートに固有]

-サブシステム which
-サブシステム which:主要な
-サブシステム which:主要な.マイナー
プログラムを実行するサブシステムを指定します。 の法的価値
which 「native」、「windows」、「console」、「posix」、および「xbox」です。 オプションで設定できます
サブシステムバージョンも。 数値も受け入れられます which。 [このオプション
リンカのi386PEターゲットポートに固有です]

次のオプションは、PEファイルの「DllCharacteristics」フィールドにフラグを設定します
ヘッダー:[これらのオプションは、リンカーのPEターゲットポートに固有です]

-高エントロピー-va
画像は64ビットアドレス空間配置のランダム化(ASLR)と互換性があります。

--dynamicbase
画像のベースアドレスは、アドレス空間配置のランダム化を使用して再配置できます
(ASLR)。 この機能は、MS Windows Vista for i386PEターゲットで導入されました。

--forceinteg
コードの整合性チェックが実施されます。

--nxcompat
イメージはデータ実行防止と互換性があります。 この機能は
MS Windows XP SP2 for i386PEターゲットで導入されました。

-分離なし
画像は分離を理解していますが、画像を分離しないでください。

--ノセヘ
画像はSEHを使用していません。 このイメージからSEハンドラーを呼び出すことはできません。

-バインドなし
この画像をバインドしないでください。

--wdmdriver
ドライバーはMSWindowsドライバーモデルを使用します。

-- ツァワレ
イメージはターミナルサーバーに対応しています。

-挿入-タイムスタンプ
--no-insert-タイムスタンプ
画像に実際のタイムスタンプを挿入します。 これは、一致するデフォルトの動作です
レガシーコードであり、イメージが他の独自のツールで動作することを意味します。 NS
このデフォルトの問題は、画像がわずかに異なる結果になることです。
同じソースがリンクされるたびに生成されます。 オプション --no-insert-タイムスタンプ できる
タイムスタンプにゼロ値を挿入するために使用されます。これにより、バイナリが確実に生成されます。
同一のソースからのものは同じように比較されます。

C6X uClinuxターゲットは、DSBTと呼ばれるバイナリ形式を使用して共有ライブラリをサポートします。 各
システム内の共有ライブラリには、一意のインデックスが必要です。 すべての実行可能ファイルは、
0.

--dsbt-サイズ サイズ
このオプションは、現在の実行可能ファイルまたは共有ファイルのDSBT内のエントリ数を設定します
ライブラリから サイズ。 デフォルトでは、64エントリのテーブルが作成されます。

--dsbt-index index
このオプションは、現在の実行可能ファイルまたは共有ライブラリのDSBTインデックスをに設定します index.
デフォルトは0で、実行可能ファイルの生成に適しています。 共有の場合
ライブラリはDSBTインデックス0で生成され、「R_C6000_DSBT_INDEX」の再配置は次のようになります。
出力ファイルにコピーされます。

  --no-merge-exidx-entries スイッチは、の隣接するexidxエントリのマージを無効にします
フレーム巻き戻し情報。

68HC11および68HC12リンカーは、メモリバンクを制御するための特定のオプションをサポートします
マッピングとトランポリンコード生成の切り替え。

-トランポリンなし
このオプションは、トランポリンの生成を無効にします。 デフォルトでは、トランポリンは
「jsr」命令を使用して呼び出されるfar関数ごとに生成されます(これは
far関数へのポインタが取られたときに発生します)。

--銀行窓口
このオプションは、リンカーにメモリ領域の名前を示します。 MEMORY
メモリバンクウィンドウを説明する仕様。 そのような地域の定義は
次に、リンカがメモリウィンドウ内のページングとアドレスを計算するために使用します。

次のオプションは、リンク時にGOT生成の処理を制御するためにサポートされています。
68Kターゲット。

--got =type
このオプションは、使用するGOT生成スキームをリンカーに指示します。 type XNUMXつである必要があります
of , , マルチゴット or ターゲット。 詳細については、情報エントリを参照してください
for ld.

次のオプションは、microMIPS命令の生成を制御するためにサポートされています。
MIPSターゲットのリンク。

--insn32
--no-insn32
これらのオプションは、によって生成されたコードで使用されるmicroMIPS命令の選択を制御します。
PLTまたはレイジーバインディングスタブ内、またはリラクゼーション内のリンカーなど。 もしも
--insn32 が使用される場合、リンカは32ビットの命令エンコーディングのみを使用します。 デフォルトでは
または --no-insn32 が使用される場合、16ビットのものを含むすべての命令エンコーディングが使用されます
可能であれば。

ENVIRONMENT


の動作を変更できます ld 環境変数「GNUTARGET」を使用して、
「LDEMULATION」および「COLLECT_NO_DEMANGLE」。

「GNUTARGET」は、使用しない場合の入力ファイルオブジェクトの形式を決定します -b (またはその同義語
- フォーマット)。 その値は、入力フォーマットのBFD名のXNUMXつである必要があります。 ない場合
環境内の「GNUTARGET」、 ld ターゲットの自然な形式を使用します。 「GNUTARGET」の場合
が「デフォルト」に設定されている場合、BFDはバイナリを調べて入力形式を検出しようとします
入力ファイル; この方法は成功することがよくありますが、そこにあるため、潜在的なあいまいさがあります
オブジェクトファイル形式を指定するために使用されるマジックナンバーが
個性的。 ただし、各システムでのBFDの構成手順では、
そのシステムの従来の形式が検索リストの最初にあるため、あいまいさが解決されます
慣習に賛成。

「LDEMULATION」は、を使用しない場合のデフォルトのエミュレーションを決定します -m オプション。 ザ·
エミュレーションは、リンカーの動作のさまざまな側面、特にデフォルトのリンカーに影響を与える可能性があります
脚本。 使用可能なエミュレーションを一覧表示できます。 -詳細 or -V オプション。 の場合
-m オプションが使用されておらず、「LDEMULATION」環境変数が定義されていない場合、
デフォルトのエミュレーションは、リンカがどのように構成されたかによって異なります。

通常、リンカはデフォルトでシンボルのデマングリングを行います。 ただし、
「COLLECT_NO_DEMANGLE」が環境に設定されている場合、デフォルトでデマングリングしないようになります
シンボル。 この環境変数は、「gcc」リンカーによって同様の方法で使用されます
ラッパープログラム。 デフォルトは、 -デマングル & -デマングルなし
オプション。

onworks.net サービスを使用してオンラインで i686-w64-mingw32-ld.bfd を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad