.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 1997 Free Software Foundation .\" See section COPYING for conditions for redistribution .\" jpman %Id: ld.1,v 1.3 1998/12/13 13:22:32 horikawa Stab % .TH ld 1 "17 August 1992" "cygnus support" "GNU Development Tools" .de BP .sp .ti \-.2i \(** .. .SH 名称 ld \- GNU リンカ .SH 書式 .hy 0 .na .TP .B ld .RB "[\|" \-o " .I output\c \&\|] \c .I objfile\c \&.\|.\|. .br .RB "[\|" \-A\c .I architecture\c \&\|] .RB "[\|" "\-b\ "\c .I input-format\c \&\|] .RB "[\|" \-Bstatic "\|]" .RB "[\|" \-Bdynamic "\|]" .RB "[\|" \-Bsymbolic "\|]" .RB "[\|" "\-c\ "\c .I commandfile\c \&\|] .RB "[\|" \-\-cref "\|]" .RB "[\|" \-d | \-dc | \-dp\c \|] .br .RB "[\|" "\-defsym\ "\c .I symbol\c \& = \c .I expression\c \&\|] .RB "[\|" "\-e\ "\c .I entry\c \&\|] .RB "[\|" \-embedded\-relocs "\|]" .RB "[\|" \-E "\|]" .RB "[\|" \-export\-dynamic "\|]" .RB "[\|" "\-f\ "\c .I name\c \&\|] .RB "[\|" "\-\-auxiliary\ "\c .I name\c \&\|] .RB "[\|" "\-F\ "\c .I name\c \&\|] .RB "[\|" "\-\-filter\ "\c .I name\c \&\|] .RB "[\|" "\-format\ "\c .I input-format\c \&\|] .RB "[\|" \-g "\|]" .RB "[\|" \-G .I size\c \&\|] .RB "[\|" "\-h\ "\c .I name\c \&\|] .RB "[\|" "\-soname\ "\c .I name\c \&\|] .RB "[\|" \-\-help "\|]" .RB "[\|" \-i "\|]" .RB "[\|" \-l\c .I ar\c \&\|] .RB "[\|" \-L\c .I searchdir\c \&\|] .RB "[\|" \-M "\|]" .RB "[\|" \-Map .I mapfile\c \&\|] .RB "[\|" \-m .I emulation\c \&\|] .RB "[\|" \-n | \-N "\|]" .RB "[\|" \-noinhibit-exec "\|]" .RB "[\|" \-no\-keep\-memory "\|]" .RB "[\|" \-no\-warn\-mismatch "\|]" .RB "[\|" "\-oformat\ "\c .I output-format\c \&\|] .RB "[\|" "\-R\ "\c .I filename\c \&\|] .RB "[\|" \-relax "\|]" .RB "[\|" \-r | \-Ur "\|]" .RB "[\|" "\-rpath\ "\c .I directory\c \&\|] .RB "[\|" "\-rpath\-link\ "\c .I directory\c \&\|] .RB "[\|" \-S "\|]" .RB "[\|" \-s "\|]" .RB "[\|" \-shared "\|]" .RB "[\|" \-sort\-common "\|]" .RB "[\|" "\-split\-by\-reloc\ "\c .I count\c \&\|] .RB "[\|" \-split\-by\-file "\|]" .RB "[\|" "\-T\ "\c .I commandfile\c \&\|] .RB "[\|" "\-Ttext\ "\c .I textorg\c \&\|] .RB "[\|" "\-Tdata\ "\c .I dataorg\c \&\|] .RB "[\|" "\-Tbss\ "\c .I bssorg\c \&\|] .RB "[\|" \-t "\|]" .RB "[\|" "\-u\ "\c .I sym\c \&] .RB "[\|" \-V "\|]" .RB "[\|" \-v "\|]" .RB "[\|" \-\-verbose "\|]" .RB "[\|" \-\-version "\|]" .RB "[\|" \-warn\-common "\|]" .RB "[\|" \-warn\-constructors "\|]" .RB "[\|" \-warn\-multiple\-gp "\|]" .RB "[\|" \-warn\-once "\|]" .RB "[\|" \-warn\-section\-align "\|]" .RB "[\|" \-\-whole\-archive "\|]" .RB "[\|" \-\-no\-whole\-archive "\|]" .RB "[\|" "\-\-wrap\ "\c .I symbol\c \&\|] .RB "[\|" \-X "\|]" .RB "[\|" \-x "\|]" .ad b .hy 1 .SH 解説 \c .B ld\c \& はいくつかのオブジェクトとアーカイブファイルを結合し、 データを再配置してシンボル参照を解決します。コンパイルされた 新しいプログラムが実行可能になるように、多くの場合 最終段階として \c .B ld\c \& が呼び出されます。 \c .B ld\c \& はリンク処理を明示的かつ総合的に制御する目的の リンカコマンド言語のファイルを受け付けます。 このマニュアルページではコマンド言語についてふれません; コマンド言語の詳細と GNUリンカの別の側面からの詳細については `\|\c .B info\c \|' の `\|\c .B ld\c \|' の項、またはマニュアル .I ld: the GNU linker \& を参照して下さい。 このバージョンの \c .B ld\c \& はオブジェクトファイルの操作に汎用の BFD ライブラリを使います。 これによって \c .B ld\c \& は多くの異なった形式 \(em\& 例えば COFF や \c .B a.out\c \& のようなオブジェクトファイル \(em\& の読み込み、結合、書き込みが 出来るようになっています。異なる形式のファイルを、利用可能な いずれかの形式のオブジェクトファイルを生成するために一緒に リンクできます。`\|\c .B objdump \-i\c \|' で各種アーキテクチャでサポートされる形式の一覧を得られます; .BR objdump ( 1 ) を参照してください。 その柔軟性の一方で、GNU リンカは診断情報の提供という点で 他のリンカよりも親切です。多くのリンカは エラーを起こした時点で即座に実行を中断してしまいます; 可能であればいつでも \c .B ld\c \& は実行を続け、他のエラーも知らせます (または、場合によっては、エラーの代わりに出力ファイルを生成します)。 GNU リンカ \c .B ld\c \& は広い範囲の各種状況をカバーすること、 そして他のリンカと可能な限り互換性を持つことを意図しています。 その結果、コマンドラインと環境変数を通して動作を制御するための 多くの選択肢を提供しています。 .SH オプション 過度のコマンドラインオプションは恐ろしく見えるかもしれませんが、 実際にはいかなる局面においてでも使用されるオプションは少ししかありません。 例えば、\c .B ld\c \& がよく使われるのは標準の Unix の オブジェクトファイルを、標準のサポートしている Unixシステム上で リンクする場合です。そのようなシステムでは、\c .B hello.o\c \& というファイルをリンクするためには以下のようにします: .sp .br $\ ld\ \-o\ output\ /lib/crt0.o\ hello.o\ \-lc .br .sp これは、\c .B output\c \& という名前のファイルを、 ファイル \c .B /lib/crt0.o\c \& と \c .B hello.o\c \& そして 標準で検索されるディレクトリから来るライブラリ \c .B libc.a\c \& をリンクした結果として生成する事を、 .B ld\c \& に対して指示しています。 .B ld\c \& へのコマンドラインオプションは 任意の順番で、何度でも繰り返してかまいません。 大抵の場合、異なる引数でオプションを繰り返すと なんの効果も無いか、または以前のオプションの指定 (コマンドラインで より左側にあるもの) を上書きします。 例外 \(em\& 2 回以上 意味を持って指定できる\(em\& は \c .B \-A\c \&, \c .B \-b\c \& (または その同義語の \c .B \-format\c \&), \c .B \-defsym\c \&, \c .B \-L\c \&, \c .B \-l\c \&, \c .B \-R\c \&, \c .B \-u\c \& です。 .I objfile\c \& として示されているひとまとめにリンクされるオブジェクトファイルの リストは、コマンドラインオプションの後に続けても、前に置いても、また 混ぜてもかまいません; 引数 \c .I objfile\c \& をオプションフラグとその引数の間に置く事は出来ないので、 これは守って下さい。 通常、リンカは少なくとも 1 つのオブジェクトファイルを指定して 起動しますが、他の形式のバイナリ入力ファイルも \c .B \-l\c \&, \c .B \-R\c \& を使って、そしてスクリプトコマンド言語で指定できます。 バイナリ入力ファイルがまったく .I 指定されない\c \& 場合は、リンカは出力ファイルを生成しません。そして `\|\c .B No input files\c \|' というメッセージを出します。 オプションの引数は空白をはさまずにオプション文字に続けるか、 その引数を必要とするオプションの直後に続けて独立した引数として 与えなければなりません。 .TP .BI "-A" "architecture" 現在リリースされている \c .B ld\c \& では、このオプションは Intel 960 ファミリの アーキテクチャでのみ使われます。そのような設定の \c .B ld\c \& では、引数の \c .I architecture\c \& には 960 ファミリのメンバを指定する 2 文字の名称のいずれかを指定します; オプションは必要な出力のターゲットを指定して、 入力ファイル中に非互換な命令があれば警告します。 またリンカがアーカイブライブラリを検索する方式も変更します。 個々のアーキテクチャに特有なライブラリを使うようにするために、 アーキテクチャを識別する文字列をサフィックスに加えた名前を 検索ループに含めます。 例えば、\c .B ld\c \& のコマンドラインに `\|\c .B \-ACA\c \|' を `\|\c .B \-ltry\c \|' と共に指定すると、リンカは (組み込まれているサーチパスと、\c .B \-L\c \& で指定されたすべてのパスについて) 以下の名前のライブラリを探します。 .sp .br try .br libtry.a .br tryca .br libtryca.a .br .sp 最初の 2 つの候補は常に検索されます; 後ろの 2 つは `\|\c .B \-ACA\c \|' を指定した事によるものです。 将来の \c .B ld\c \& のリリースでは他のアーキテクチャファミリでも同様の機能を サポートするかもしれません。 アーキテクチャファミリがターゲットアーキテクチャの組合せを 認めるのなら、意味を持ってコマンドライン上で 2 回以上 \c .B \-A\c \& を指定することが出来ます; \c .B \-l でライブラリが指定される時に、それぞれの指定による別の派生の 名前のペアが検索のために追加されます。 .TP .BI "\-b " "input-format" コマンドライン上でこのオプションに続いている入力オブジェクトファイルの バイナリ形式を指定します。 通常はこれを指定する必要はありません。 それぞれのマシン上で最も一般的な形式がデフォルトの入力形式であると 期待するように、\c .B ld\c \& が設定されているからです。 \c .I input-format\c \& は文字列テキストで、BFD ライブラリでサポートされる 形式名です。 \c .B \-format \c .I input-format\c \&\c \& と、スクリプトコマンド中の .BR TARGET も同じ機能です。 ファイルを通常でないバイナリ形式とリンクする場合にこのオプションを 使いたいかも知れません。 (異なる形式のオブジェクトファイルとリンクする時に) 同様に \c .B \-b\c \& で明示的に形式を切替えられます。その場合は \c .B \-b \c .I input-format\c \&\c \& を特定の形式のオブジェクトファイルの各グループの前で 指定します。 デフォルトの形式は環境変数 .B GNUTARGET\c \& からとられます。スクリプトから入力形式を指定する事もでき、 その場合は \c .B TARGET\c \& コマンドを使います。 .TP .B \-Bstatic 共有ライブラリとリンクしません。これは共有ライブラリを サポートしているプラットフォーム上でのみ意味を持ちます。 .TP .B \-Bdynamic ダイナミックライブラリとリンクします。 これは共有ライブラリをサポートしている プラットフォームでのみ意味を持ちます。そのようなプラットフォームでは 通常このオプションがデフォルトです。 .TP .B \-Bsymbolic 共有ライブラリを作成する際に、もしあれば、グローバルシンボルへの 参照を共有ライブラリ内の定義と対応づけます。通常は 共有ライブラリとリンクされたプログラムが共有ライブラリ内の 定義を上書きする事が可能です。このオプションは 共有ライブラリをサポートする ELF のプラットフォームでのみ意味を持ちます。 .TP .BI "\-c " "commandfile" ファイル \c .I commandfile\c \& からリンクコマンドを読み込むよう \c .B ld\c \& に指示します。 読み込まれたコマンドは \c .B ld\c \& のデフォルトのリンク形式を (付け加えるのではなく) 完全に置き換えます; \c .I commandfile\c \& には目的の形式を指示するために必要な物をすべて 書いておかなければなりません。 リンクコマンドのスクリプトをコマンドラインで直接 指定することも可能で、その場合はそれを文字 `\|\c .B {\c \|' と `\|\c .B }\c \|' で囲んで指定します。 .TP .B \-\-cref クロスリファレンステーブルを出力します。リンクマップファイルが 生成されていれば、クロスリファレンステーブルがマップファイルに 出力されます。そうでない場合は標準出力に表示されます。 .TP .B \-d .TP .B \-dc .TP .B \-dp これらの 3 つのオプションは等価です; 他のリンカとの互換性のために 複数の形式がサポートされています。再配置可能なファイルを出力する ように指定された場合 (\c .B \-r\c \&) でもコモンシンボルに空間を割り当てるよう \c .B ld に指示する場合に、いずれかを使います。 スクリプト中での \c .B FORCE_COMMON_ALLOCATION\c \& コマンドも同じ効果を持ちます。 .TP .BI "-defsym " "symbol" "\fR = \fP" expression 出力ファイル中に \c .I expression\c \& で与えられた絶対アドレスを持つグローバルシンボルを生成します。 複数のシンボルを定義するためにコマンドラインで必要回数だけ このオプションを指定してかまいません。この文脈では 限定されますが \c .I expression\c \& として式を使う事ができます: 16 進定数や定義済シンボル、 または \c .B +\c \& と \c .B \-\c \& で 16 進定数や定義済シンボルの加減算を行えます。 より手の込んだ式が必要であれば、スクリプトから リンカコマンド言語を使う事を検討してください。 .TP .BI "-e " "entry"\c \& プログラムの実行開始番地を示す明示的なシンボルとして、 デフォルトの開始番地の代わりに \c .I entry\c \& を使います。 .\" info の @xref{Entry Point} が変換されていない。 デフォルトと開始番地指定の他の方法については .B info \c の Entry Point の項を参照してください。 .TP .B \-embedded\-relocs このオプションは、 .B \-membedded\-pic オプションを GNU コンパイラとアセンブラに指定して生成した MIPS 組み込み用位置独立コードをリンクする場合にのみ意味を持ちます。 これによってリンカは、ポインタ値に初期化されている静的変数を 実行時に再配置するために利用できるテーブルを生成するようになります。 詳しくは testsuite/ld-empic にあるコードを参照してください。 .TP .B \-E .TP .B \-export\-dynamic ELF ファイルを生成する際に、すべてのシンボルを実行時シンボルテーブルに 加えます。通常、実行時シンボルテーブルは実行時オブジェクトが 使用するシンボルだけを含みます。このオプションは .I dlopen を使用する場合に必要です。 .TP .BI "-f " "name" .TP .BI "--auxiliary " "name" ELF の共有オブジェクトを生成する際に、内部の DT_AUXILIARY フィールドを 指定した name にセットします。これは、 共有オブジェクトのシンボルテーブルを、 共有オブジェクト .I name のシンボルテーブルに適用する補助のフィルタとして使う事を、 実行時リンカに対して指示します。 .TP .BI "-F " "name" .TP .BI "--filter " "name" ELF の共有オブジェクトを生成する際に、内部の DT_FILTER フィールドを 指定した name にセットします。これは、 共有オブジェクトのシンボルテーブルを、 共有オブジェクト .I name のシンボルテーブルに適用するフィルタとして使う事を、 実行時リンカに対して指示します。 .TP .BI "\-format " "input\-format" .B \-b\c \& \c .I input\-format\c \& と同意です。 .TP .B \-g 受け付けますが、無視されます; 他のツールとの互換性のために提供されています。 .TP .BI "\-G " "size"\c MIPS ECOFF において GP レジスタを使って最適化されるオブジェクトの 最大サイズを .I size にします。他のオブジェクトファイル形式では無視されます。 .TP .BI "-h " "name" .TP .BI "-soname " "name" ELF の共有オブジェクトを生成する際に、内部の DT_SONAME フィールドを 指定した name にセットします。実行形式が DT_SONAME フィールドを持つ 共有オブジェクトとリンクされると、実行形式が実行される時に、 実行時リンカはリンカに与えられたファイル名を使う代わりに DT_SONAME フィールドで指定された共有オブジェクトをロードしようとします。 .TP .B \-\-help コマンドラインオプションのサマリを標準出力に表示して終了します。 このオプションと、1 つではなく 2 つのダッシュで始まる .B \-\-version は他の GNUプログラムとの互換性のためのものです。 1 つだけのダッシュで始まる他のオプションは他のリンカとの互換性のための ものです。 .TP .B \-i インクリメンタルリンクを行います (\c .B \-r\c \& オプションと同じです)。 .TP .BI "\-l" "ar"\c \& アーカイブファイル \c .I ar\c \& をリンクするファイルのリストに加えます。このオプションは 何度でも指定できます。\c .B ld\c \& は、指定された各 \c .I ar について \c .B lib\c .I ar\c \&.a\c \& を自己のパスリストから探します。 .TP .BI "\-L" "searchdir" このコマンドはパス \c .I searchdir\c \& を、 \c .B ld\c \& がアーカイブライブラリを探すパスのリストに追加します。 このオプションは何度でも指定して構いません。 デフォルトで (\c .B \-L\c \& で指定されずに) 探すパスの組は \c .B ld\c \& がどのエミュレーションモードを使っているか、そして 場合によってはどうコンフィギュレーションされているか、 に依存します。パスはリンクスクリプトの中でも .B SEARCH_DIR コマンドを使って指定できます。 .TP .B \-M リンクマップ \(em\& \c .B ld\c \& によってシンボルがどこに配置されたかの診断情報、そして グローバルなコモン領域の配置情報 \(em\& を (標準出力ファイルへ) 出力します。 .TP .BI "\-Map " "mapfile"\c ファイル .I mapfile にリンクマップ \(em\& \c .B ld\c \& によってシンボルがどこに配置されたかの診断情報、そして グローバルなコモン領域の配置情報 \(em\& を出力します。 .TP .BI "\-m " "emulation"\c .I emulation で指定されたリンカをエミュレートします。 .I emulation として指定できる物は .I \-\-verbose か .I \-V オプションでリストできます。このオプションは、 .BR ld をコンパイルする際にコンフィギュレーションでデフォルトとして指定して 埋め込まれている目的システムに優先します。 .TP .B \-N .B text\c \& と \c .B data\c \& セクションを読み書き可能にする指定です。 出力形式が Unix スタイルのマジックナンバをサポートしているなら、 出力は \c .B OMAGIC\c \& とマークされます。 `\|\c .B \-N\c \&\|' オプションを指定した場合は、リンカは データセグメントをページ境界に合わせることをしません。 .TP .B \-n テキストセグメントを読み込み専用にします。そして可能であれば \c .B NMAGIC\c \& が書き込まれます。 .TP .B \-noinhibit\-exec 通常、リンカはリンク処理中にエラーがあった場合は出力ファイルを生成しません。 このフラグを指定すると、致命的ではないエラーの後であっても 出力ファイルを残しておく事を望んでいる事を指示できます。 .TP .B \-no\-keep\-memory 通常、リンカは速度面での最適化を、 入力ファイルのシンボルテーブルをメモリ中にキャッシュすることでの メモリ使用量の増大よりも優先します。このオプションで、 そうではなく必要に応じてシンボルを再読み込みする事でメモリ使用量を 最適化する事を指示できます。大きな実行ファイルをリンクしている際に メモリ領域を使いきってしまうような場合に、このオプションが 必要になるかもしれません。 .TP .B \-no\-warn\-mismatch 通常、何らかの理由でマッチしない入力ファイル同士をリンクしようとすると、 リンカはエラーを起こします。 おそらくは、異なる プロセッサ用か異なるエンディアン向けにコンパイルされたことが原因でしょう。 このオプションは、そのような起こり得るエラーを黙って許容するよう、 リンカに対して指示します。このオプションは、リンカが エラーとする事が不適切と確証を持てる特別な処理を行う場合にのみ 注意深く使うべきです。 .TP .BI "\-o " "output" .I output\c \& が \c .B ld\c \& の生成するプログラム名です; このオプションが 指定されていない場合は、デフォルトの名前 `\|\c .B a.out\c \|' が使われます。 スクリプトのコマンド \c .B OUTPUT\c \& でも出力ファイル名を指定できます。 .TP .BI "\-oformat " "output\-format" 出力オブジェクトファイルのバイナリ形式を指定します。\c .B ld\c \& はデフォルトの出力形式としてそれぞれのマシンで最も一般的な形式を 生成するようにコンフィギュレーションされているので、 通常はこれを指定する必要はありません。\c .I output-format\c \& は文字列テキストで、BFD ライブラリでサポートされる 形式名で指定します。スクリプトでのコマンド .B OUTPUT_FORMAT でも出力形式を指定できますが、このオプションはそれより優先されます。 .TP .BI "\-R " "filename" シンボル名とそのアドレスを \c .I filename\c \& から読み込みますが、それを再配置したり出力に 含めたりはしません。これによって、 他のプログラムが定義しているメモリ中の絶対番地を、 出力するファイルからシンボルで参照することが可能になります。 .TP .B \-relax マシン固有の効果を持つオプションです。現在はこのオプションは H8/300 でのみサポートされます。 プラットフォームによっては、このオプションでリンカがプログラム中の アドレッシングを解決する時にアドレスモードを緩めて、出力ファイルに 新しい命令を生成する広域最適化を行う事が可能になります。 これがサポートされないプラットフォームでは、 `\|\c .B \-relax\c \&\|' は受け付けますが影響はありません。 .TP .B \-r 再配置可能な出力を生成します \(em\& つまり、再度 \c .B ld\c \& に入力として与えられる出力ファイルを生成します。 これはしばしば \c .I 部分的な リンク\c \&と呼ばれます。副作用として、標準的な Unix のマジックナンバを サポートする環境では、このオプションは同時に出力ファイルの マジックナンバを \c .B OMAGIC\c \& にします。 このオプションが指定されないと、絶対ファイルが生成されます。 C++ のプログラムをリンクしている時は、このオプションでは コンストラクタへの参照は解決 \c .I されません\c \&; 代わりに \c .B \-Ur\c \& を使ってください。 このオプションは \c .B \-i\c \& と同じ事をします。 .TP .B \-rpath\ \fIdirectory 実行時のライブラリ検索パスにディレクトリを追加します。これは ELF 実行形式を共有オブジェクトとリンクする時に使われます。 すべての .B \-rpath 引数がつながれて、実行時リンカに渡されます。実行時リンカは それらを使って共有オブジェクトの位置を実行時に突き止めます。 .B \-rpath オプションは、リンク時に明示的に含められた共有オブジェクトが 必要とする共有オブジェクトの位置を突き止めるためにも使われます; .B \-rpath\-link オプションの説明を参照してください。もし ELF 実行形式をリンクする時に .B \-rpath が使われないと、定義されていれば環境変数 .B LD_RUN_PATH の内容が使われます。 .B \-rpath は SunOS でも利用できます。SunOS ではデフォルトで、 リンカは与えられたすべての .B \-L オプションを含む実行時の検索パスを生成します。 もし .B \-rpath が指定されれば、実行時の検索パスは .B \-rpath オプションを使い、 .B \-L オプションは無視して排他的に形成されます。 このことは gcc を使う時に有効でしょう。 gcc は多くの .B \-L オプションを付け、それらは NFSマウントされたファイルシステムに あるかもしれないからです。 .TP .B \-rpath\-link\ \fIdirectory ELF か SunOS で使う時に、1 つの共有ライブラリが他の共有ライブラリを 必要とするかも知れません。これは .B ld\ \-shared によるリンクで入力ファイルの 1 つとして共有ライブラリが含まれる 場合に発生します。 リンカがそのような依存関係に出会った時、非共有、再配置不可能の リンクをしている時は、もし必要な共有ライブラリが明示的には含まれて いないのなら、自動的にその位置を突き止めてリンク作業に 含めようとします。そのような場合、 .B \-rpath\-link オプションで最初に検索するディレクトリのセットを指定できます。 .B \-rpath\-link オプションは、コロンで区切って名前をリストにするか 複数回指定する事でディレクトリ名の並びを指定できます。 必要な共有ライブラリが見付からないと、リンカは 警告を出力してリンク作業を継続します。 .TP .B \-S (すべてのシンボルではなく) デバッガシンボル情報だけを、 出力ファイルに出しません。 .TP .B \-s すべてのシンボル情報を出力ファイルに出しません。 .TP .B \-shared 共有ライブラリを作成します。これは現時点では ELF と SunOS のプラットフォームでのみサポートされます (SunOS では指定しなくても構いません。リンカは未定義シンボルが あって .B \-e オプションが指定されていなければ自動的に共有ライブラリを作成します)。 .TP .B \-sort\-common 通常、 .B ld がグローバルのコモンシンボルを適切な出力セクションに置く時、 それらをサイズ順に並べます。最初にすべての 1 バイトのシンボルが来て、 すべての 2 バイト、それからすべての 4 バイト、そしてそれら以外の 順になります。これはアラインメントの制約によるシンボル間のすき間を 避けるために行われます。このオプションでは、その並べ替えを抑止します。 .TP .B \-split\-by\-reloc\ \fIcount .I count 個より多くの再配置を含む出力セクションが 1 つもできないように、 出力ファイルに追加のセクションを作る事を試みます。 これは、ある種のリアルタイムカーネルに、COFF オブジェクト形式で ダウンロードするための巨大な再配置可能ファイルを生成する時に有用です; COFF では 1 つのセクションで 65535 個より多い再配置情報を持てないからです。 これは任意のセクションをサポートしないオブジェクトファイル形式では うまく動作しない事に注意してください。リンカは個々の入力の セクションを再分配のために切り分ける事はありません。このため、もし 1 つの入力セクションが .I count より多い再配置を含んでいると、1 つの出力セクションがその数の 再配置を含む事になります。 .TP .B \-split\-by\-file .B \-split\-by\-reloc と同様ですが、入力ファイル毎に新しい出力セクションを生成します。 .TP .BI "\-Tbss " "org"\c .TP .BI "\-Tdata " "org"\c .TP .BI "\-Ttext " "org"\c 出力ファイルのセグメント \c .B bss\c \&, \c .B data\c \&, \c .B text\c \& の開始アドレスを \(em\& それぞれのオプションで指定された \(em\& \c .I org\c \& にします。 \c .I org\c \& は 16 進整数でなければなりません。 .TP .BI "\-T " "commandfile" .B \-c \c .I commandfile\c \&\c \& と等価です; 他のツールとの互換性のためにサポートされています。 .TP .B \-t \c .B ld\c \& が処理している入力ファイル名を出力します。 .TP .BI "\-u " "sym" 強制的に \c .I sym\c \& が未定義シンボルとして出力ファイルに入るようにします。 これは、例えば、標準ライブラリから追加のモジュールをリンクする 引金となり得ます。 さらに未定義シンボルを追加するために \c .B \-u\c \& を 異なるオプション引数で繰り返し可能です。 .TP .B \-Ur C++ プログラム以外の物については、このオプションは \c .B \-r\c \& と等価です: 再配置可能な出力 \(em\& つまり、再度 \c .B ld\c \& に入力として与えられる出力ファイル \(em\& を生成します。 C++ プログラムをリンクする時は、\c .B \-r\c \& と異なり \c .B \-Ur \& はコンストラクタの参照を解決 .I します\c 。 .TP .B \-\-verbose .B ld のバージョン番号とサポートするエミュレーションのリストを表示します。 どの入力ファイルが開けた/開けなかったかを表示します。 .TP .B \-v, \-V .B ld\c \& のバージョン番号を表示します。 .B \-V オプションではサポートするエミュレーションのリストも表示します。 .TP .B \-\-version .B ld のバージョン番号を表示して終了します。 .TP .B \-warn\-common コモンシンボルが他のコモンシンボルかシンボル定義と結合された時に 警告します。Unix のリンカはこのややずさんな慣習を許しますが、 他のいくつかのオペレーティングシステムのリンカは許しません。 このオプションでグローバルシンボルの結合による問題の可能性を 見つけることができます。 .TP .B \-warn\-constructors グローバルコンストラクタの使用を警告します。これは 2、3 の オブジェクトファイル形式でのみ有用です。COFF や ELF といった 形式については、リンカはグローバルコンストラクタの使用を 検出できません。 .TP .B \-warn\-multiple\-gp 出力ファイルが複数のグローバルポインタ値を必要とする場合に警告します。 このオプションはある種のプロセッサ、Alpha などでのみ意味を持ちます。 .TP .B \-warn\-once 未定義シンボルのそれぞれについて、それを参照するモジュール毎でなく、 1 回だけ警告します。 .TP .B \-warn\-section\-align 出力セクションのアドレスがアラインメントのために変更されると警告します。 典型的には、アラインメントは入力セクションによってセットされます。 アドレスはアラインメントが明示的に指定されなかった場合にのみ変更されます; つまり SECTIONS コマンドがセクションの開始番地を指定しなかった場合です。 .TP .B \-\-whole\-archive コマンドライン上で .B \-\-whole\-archive オプションの後に指定された各アーカイブについて、 必要なオブジェクトファイルをアーカイブから探す代わりに、 アーカイブ中の全オブジェクトファイルをリンクします。 これは通常、アーカイブファイルを共有ライブラリにするのに使い、 作成する共有ライブラリに全オブジェクトが確実に入るようにします。 .TP .B \-\-no\-whole\-archive これ以降にコマンドライン上で指定されたアーカイブについて .B \-\-whole\-archive オプションの効果を無効にします。 .TP .BI "--wrap " "symbol" .I symbol についてラッパー関数を使います。 未解決の .I symbol への参照を .BI "__wrap_" "symbol" で解決します。 未解決の .BI "__real_" "symbol" への参照を .I symbol で解決します。 .TP .B \-X テンポラリのローカルシンボルをすべて削除します。大部分のターゲットでは、 これは名前が `\|\c .B L\c \|' で始まるすべてのローカルシンボルになります。 .TP .B \-x すべてのローカルシンボルを削除します。 .PP .SH 環境変数 \c 環境変数 \c .B GNUTARGET\c \& で .B ld\c \& の動作を変えることが出来ます。 \c .B \-b\c \& (またはその同義語の \c .B \-format\c \&) を使わない場合に .B GNUTARGET\c \& で入力ファイルオブジェクト形式が決まります。\c その値は入力形式を示す BFD 名でなければなりません。 環境変数に \c .B GNUTARGET\c \& が無ければ、\c .B ld\c \& はホストの自然な形式を 使います。もし\c .B GNUTARGET\c \& が .B default\c \& にセットされていれば\c BFD はバイナリ入力ファイルを調べることで入力形式を 見つけようとします; このやりかたは多くの場合に成功しますが、 あいまいになる可能性があります。オブジェクトファイル形式の 印として使われているマジックナンバが重複していない事を 確認する方法が存在しないからです。しかしながら、各システムでの BFD のコンフィギュレーション処理で、そのシステムで慣習的に 使われる形式を検索リストの最初に置きます。よってあいまいさは 慣習に合わせる事で解決されます。 .PP .SH "関連項目" .BR objdump ( 1 ) .br .br .B info\c の .RB "`\|" ld "\|' と `\|" binutils "\|'" の項 .br .I ld: the GNU linker\c , Steve Chamberlain and Roland Pesch; .I The GNU Binary Utilities\c , Roland H. Pesch .SH COPYING Copyright (c) 1991, 1992 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. .PP Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. .PP Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .SH 日本語訳 野首 寛高(hnokubi@yyy.or.jp): FreeBSD 用に翻訳