diff --git a/ja_JP.eucJP/man/man1/ld.1 b/ja_JP.eucJP/man/man1/ld.1 index 38e0887921..23f770f4ee 100644 --- a/ja_JP.eucJP/man/man1/ld.1 +++ b/ja_JP.eucJP/man/man1/ld.1 @@ -1,1518 +1,1901 @@ -.\" Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -.\" 2001 Free Software Foundation, Inc. -.\" See section COPYING for conditions for redistribution -.\" -.\" Copyright (c) 2001 FreeBSD jpman project -.\" This is for Japanese translation done by FreeBSD jpman project. -.\" %FreeBSD: src/contrib/binutils/ld/ld.1,v 1.2.2.3 2001/08/01 23:03:10 obrien Exp % +.\" %FreeBSD: src/contrib/binutils/ld/ld.1,v 1.2.2.4 2002/09/01 23:44:13 obrien Exp % .\" $FreeBSD$ -.TH ld 1 "" "Free Software Foundation" "GNU Development Tools" -.de BP -.sp -.ti \-.2i -\(** +.\" +.\" +.\" Automatically generated by Pod::Man v1.3, Pod::Parser v1.13 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP .. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R -.SH 名称 -ld \- GNU リンカ - -.SH 書式 +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. .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 "[\|" \-Bgroup "\|]" -.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 "[\|" \-\-demangle "\|]" -.RB "[\|" \-\-no\-demangle "\|]" -.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 "[\|" \-O\c -.I level\c -\&\|] -.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 "[\|" "\-\-section\-start\ "\c -.I sectionname\c -\&=\c -.I sectionorg\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 \-\-section\-start\c -\&, \c -.B \-L\c -\&, \c -.B \-l\c -\&, \c -.B \-R\c -\&, \c -.B \-u\c -\& です。 - -.I objfile\c -\& として示されているひとまとめにリンクされるオブジェクトファイルの -リストは、コマンドラインオプションの後に続けても、前に置いても、また -混ぜてもかまいません; 引数 \c -.I objfile\c -\& をオプションフラグとその引数の間に置く事は出来ないので、 -これは守って下さい。 - +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "LD 1" +.TH LD 1 "2002-05-11" "binutils-2.12.1" "GNU Development Tools" +.UC +.SH "名称" +ld \- \s-1GNU\s0 リンカ \s-1LD\s0 の使い方 +.SH "書式" +.IX Header "書式" +ld [\fBoptions\fR] \fIobjfile\fR ... +.SH "解説" +.IX Header "解説" +\&\fBld\fR は、いくつかのオブジェクトファイルとアーカイブファイルを +結合し、そのデータを再配置し、シンボルの参照を結びつけます。 +通常、プログラムのコンパイルの最終段階が、\fBld\fR を実行することです。 +.PP +\&\fBld\fR は、リンク処理を明示的かつ統合的に制御するために、 +\&\s-1AT&T\s0 のリンクエディタコマンド言語の文法の上位互換セットで +記述されたリンカコマンド言語のファイルを受け付けます。 +.PP +このマニュアルページではコマンド言語についてふれません。 +コマンド言語の詳細と \s-1GNU\s0 リンカの別の側面からの詳細については +\&\f(CW\*(C`info\*(C'\fR の \fBld\fR の項、またはマニュアル +ld: the \s-1GNU\s0 linker を参照してください。 +.PP +このバージョンの \fBld\fR は、オブジェクトファイルの操作に汎用の +\&\s-1BFD\s0 ライブラリを使用します。 +これによって \fBld\fR は、多くの異なった形式 \-\-\- 例えば +\&\s-1COFF\s0 や \f(CW\*(C`a.out\*(C'\fR のようなオブジェクトファイル +\&\-\-\- の読み込み、結合、書き込みが出来るようになっています。 +異なる形式のファイルを一緒にリンクして、 +任意の利用可能なオブジェクトファイルを生成できます。 +.PP +その柔軟性の他にも、\s-1GNU\s0 リンカは、診断情報の提供という点で +他のリンカよりも役に立ちます。 +多くのリンカは、エラーを起こした時点で即座に実行を中断してしまいますが、 +\&\fBld\fR は可能な限り実行を続けるので、他のエラーも突き止めることが +できます。 +(また、場合によっては、エラーにもかかわらず出力ファイルを生成します)。 +.PP +\&\s-1GNU\s0 リンカ \fBld\fR は、広い範囲の各種状況に対応すること、 +そして他のリンカとの互換性をできるだけ維持することを目指しています。 +そのため、その動作を制御するための多くの選択肢があります。 +.SH "オプション" +.IX Header "オプション" +このリンカは、おびただしい量のコマンドラインオプションを備えていますが、 +実際には、いかなる局面においても使用されるオプションは、少ししかありません。 +例えば、\fBld\fR がよく使われるのは、Unix の標準のオブジェクトファイルを、 +\&\fBld\fR がサポートする標準の Unix システム上でリンクする場合です。 +そのようなシステム上では、\f(CW\*(C`hello.o\*(C'\fR というファイルを +リンクするためには以下のようにします: +.PP +.Vb 1 +\& ld -o I /lib/crt0.o hello.o -lc +.Ve +これは、\f(CW\*(C`/lib/crt0.o\*(C'\fR と \f(CW\*(C`hello.o\*(C'\fR、そして +標準で検索されるディレクトリにあるライブラリ \f(CW\*(C`libc.a\*(C'\fR を +リンクして、\fIoutput\fR という名前のファイルを生成することを \fBld\fR に +対して指示しています。 +.PP +\&\fBld\fR に対するいくつかのコマンドラインオプションは、コマンドラインの +どこででも指定できます。 +しかし、ファイルを参照する \fB\-l\fR や \fB\-T\fR のようなオプションは、 +オブジェクトファイルやその他のファイルオプションに関連しており、 +コマンドライン中にオプションが現れた時点でファイルを読みます。 +ファイルを取らないオプションを異なる引数を指定して繰返しても、 +それ以上影響がないか、もしくは (コマンドライン上で左にある) +それまでの指定を上書きします。 +2 回以上指定しても意味のあるオプションは、以下の説明の中で記述されています。 +.PP +オプション引数ではないものは、一緒にリンクされるオブジェクトファイルか +アーカイブです。 +それらは、オプションとそのオプションの引数の間に入らない限り、 +コマンドラインオプションの前に置いても、後ろに置いても、 +混ぜて指定しても構いません。 +.PP 通常、リンカは少なくとも 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 \-Bgroup -.B DF_1_GROUP -フラグを、動的セクションの -.B DT_FLAGS_1 -エントリにセットします。 -これにより、実行時リンカが行うオブジェクト内の検索と依存関係の実行が、 -グループ内に限定されます。 -未定義シンボルは許されません。 -共有ライブラリをサポートする ELF プラットフォームでのみ意味があります。 -.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 -.B \-\-demangle -.TP -.B \-\-no\-demangle -このオプションは、 -エラーメッセージや他の出力において、 -シンボル名を元に戻す (demangle する) か否かを制御します。 -リンカが元に戻すように指示された場合、シンボル名を可読形式にしようとします。 -すなわち、 -オブジェクトファイルが使用しているならば先頭のアンダスコアを削除し、 -C++ で変換されたシンボル名をユーザが可読な名前に変換します。 -リンカは、デフォルトでは元に戻す動作を行いますが、環境変数 -.B COLLECT_NO_DEMANGLE -が設定されている場合は例外です。 -これらのオプションを使用してデフォルトを上書き可能です。 - -.TP -.BI "-e " "entry"\c -\& -プログラムの実行開始番地を示す明示的なシンボルとして、 -デフォルトの開始番地の代わりに \c -.I entry\c -を使用します。 -デフォルトと開始番地指定の他の方法については -.B info\c -の -.B ld\c -の項を参照してください。 - -.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 "\-O" "level" -最適化した出力ファイルを生成します。 -非常に長い時間がかかるかもしれませんので、 -最終的なバイナリを生成するときのみ有効にすべきかもしれません。 -\c -.I level\c -\& は数値であるものとして扱われます。 -0 より大きな値は最適化を有効にします。 - -.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 -リンカは与えられたすべての -.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 "--section-start " "sectionname" "\fR=\fP"org -出力ファイル中のセクションの絶対アドレスを -.I org -で指定します。 -.I org -は 16 進整数であることが必要です。 -複数セクションの位置を指定するために、複数回コマンドラインで指定可能です。 -手の込んだ式を使う必要がある場合、 -スクリプトからリンカコマンド言語を使用することを検討してください。 - -.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\& -.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 +起動されますが、\fB\-l\fR や \fB\-R\fR を用いて、または +スクリプトコマンド言語使って、他のバイナリ形式の入力ファイルを +指定することができます。 +バイナリ入力ファイルが全く指定されなかった場合、 +リンカは何も出力をせず、\fBNo input files\fR というメッセージを出します。 +.PP +リンカがオブジェクトファイルの形式を認識できなかった時は、 +それをリンカスクリプトと仮定します。 +このように指定されたスクリプトは、リンクに使われる主リンカスクリプト +(デフォルトのリンカスクリプト、もしくは \fB\-T\fR で指定されたスクリプト) に +追加されます。 +この機能により、一見オブジェクトファイルもしくはアーカイブに見えるが、 +実際は単にシンボル値を定義しているだけだったり、 +\&\f(CW\*(C`INPUT\*(C'\fR や \f(CW\*(C`GROUP\*(C'\fR を使って +他のオブジェクトを読み込んでるだけのファイルをリンクすることができます。 +このように指定されたスクリプトは、主リンカスクリプトに +単に追加されるだけということに注意してください。 +デフォルトのリンカスクリプトを完全に置き換える場合は、 +\&\fB\-T\fR オプションを使ってください。 +.PP +1 文字の名前を持つオプションの引数は、間に空白が入らずに +オプション文字に続くか、その引数が必要なオプションのすぐ後に、 +独立した引数として与えられるかしなければなりません。 +.PP +複数文字の名前を持つオプションは、 1 つ、または 2 つのダッシュの +どちらの後に続いても構いません。 +例えば、\fB\-trace\-symbol\fR と \fB\-\-trace\-symbol\fR は等価です。 +このルールには 1 つだけ例外があることに注意してください。 +小文字の 'o' で始まる複数文字のオプションは、 +2 つのダッシュの後にしか続きません。 +これは、\fB\-o\fR オプションとの混乱を少なくするためです。 +ですから、例えば \fB\-omagic\fR は出力ファイル名を +\&\fBmagic\fR とするのに対して、\fB\-\-omagic\fR は出力に +\&\s-1NMAGIC\s0 フラグを設定します。 +.PP +複数文字のオプションへの引数は、等号記号がオプションとの間に入るか、 +その引数を必要とするオプションのすぐ後に、 +独立した引数として与えられるかしなければなりません。 +例えば、\fB\-\-trace\-symbol foo\fR と \fB\-\-trace\-symbol=foo\fR は +等価です。 +複数文字のオプションを、一意に定まるように省略しても、受け付けられます。 +.PP +リンカがコンパイラドライバ (例えば \fBgcc\fR) によって間接的に +起動される場合、すべてのリンカのコマンドラインオプションは、 +\&\fB\-Wl,\fR (もしくは特定のコンパイラドライバの適切なオプション) +に続いて以下のように指定されなければなりません: +.PP +.Vb 1 +\& gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup +.Ve +これは重要です。 +というのも、このようにしないと、コンパイラドライバプログラムは +何も言わずにリンカオプションを落してしまい、リンクが正しく +行われなくなってしまうからです。 +.PP +以下は、\s-1GNU\s0 リンカが受け入れる一般的なコマンドラインスイッチの +一覧です: +.IP "\fB\-a\fR\fIkeyword\fR" 4 +.IX Item "-akeyword" +このオプションは、\s-1HP/UX\s0 との互換性のためにサポートされています。 +\&\fIkeyword\fR 引数は、文字列 \fBarchive\fR, \fBshared\fR または +\&\fBdefault\fR のどれかでなければなりません。 +\&\fB\-aarchive\fR は、機能的には \fB\-Bstatic\fR と等価であり、 +残りの 2 つの keyword は、機能的に \fB\-Bdynamic\fR と等価です。 +このオプションは何度でも使うことができます。 +.IP "\fB\-A\fR\fIarchitecture\fR" 4 +.IX Item "-Aarchitecture" +.PD 0 +.IP "\fB\-\-architecture=\fR\fIarchitecture\fR" 4 +.IX Item "--architecture=architecture" +.PD +現在リリースされている \fBld\fR では、このオプションは +Intel 960 ファミリのアーキテクチャでのみ使われます。 +そのような \fBld\fR の構成では、\fIarchitecture\fR 引数は、 +960 ファミリの特定のアーキテクチャを指定し、いくつかの保護手段を有効にし、 +アーカイブライブラリの検索パスを修正します。 +.Sp +将来の \fBld\fR のリリースでは、他のアーキテクチャファミリでも +同様の機能をサポートするかもしれません。 +.IP "\fB\-b\fR \fIinput-format\fR" 4 +.IX Item "-b input-format" +.PD 0 +.IP "\fB\-\-format=\fR\fIinput-format\fR" 4 +.IX Item "--format=input-format" +.PD +\&\fBld\fR は、1 種類以上のオブジェクトファイルをサポートするように +構成することができます。 +もし \fBld\fR がそのように構成されているなら、\fB\-b\fR オプションで +入力するオブジェクトファイルのバイナリ形式を指定することができます。 +その入力ファイルは、コマンドライン上でこのオプションに続けて指定します。 +たとえ \fBld\fR が、他のオブジェクト形式をサポートするように +設定されていても、通常このオプションを指定する必要はありません。 +というのも、\fBld\fR は、それぞれマシン上で最も一般的な形式が +デフォルトの入力形式であると期待するよう設定されているからです。 +\&\fIinput-format\fR はテキスト文字列で、\s-1BFD\s0 ライブラリで +サポートされている特定の形式名です +(\fBobjdump \-i\fR で、使用可能なバイナリ形式名のリストが得られます)。 +.Sp +ファイルを通常でないバイナリ形式とリンクしたい場合に、 +このオプションを使うことができます。 +(異なる形式のオブジェクトファイルとリンクする時に) 同様に +\&\fB\-b\fR で明示的に形式を切り替えられます。 +その場合は \fB\-b\fR \fIinput-format\fR を特定の形式の +オブジェクトファイルの各グループの前で指定します。 +.Sp +デフォルトの形式は、環境変数 \f(CW\*(C`GNUTARGET\*(C'\fR から +取得されます。 +.Sp +スクリプトから入力形式を指定する事もでき、 +その場合はコマンド \f(CW\*(C`TARGET\*(C'\fR を使います。 +.IP "\fB\-c\fR \fIMRI-commandfile\fR" 4 +.IX Item "-c MRI-commandfile" +.PD 0 +.IP "\fB\-\-mri\-script=\fR\fIMRI-commandfile\fR" 4 +.IX Item "--mri-script=MRI-commandfile" +.PD +\&\s-1MRI\s0 製のリンカとの互換性のため、\fBld\fR は、 +\&\s-1GNU\s0 ld ドキュメントの \s-1MRI\s0 互換スクリプトファイルの章に +記述されているもう一つの制限されたコマンド言語で書かれた +スクリプトファイルを受け付けます。 +オプション \fB\-c\fR で \s-1MRI\s0 スクリプトファイルを導入した場合は、 +\&\fB\-T\fR オプションを用いることで、汎用目的の \fBld\fR スクリプト言語で +書かれたリンカスクリプトを走らせることができます。 +\&\fIMRI-commandfile\fR がなかった場合、\fBld\fR は、\fB\-L\fR で指定された +すべてのディレクトリを探します。 +.IP "\fB\-d\fR" 4 +.IX Item "-d" +.PD 0 +.IP "\fB\-dc\fR" 4 +.IX Item "-dc" +.IP "\fB\-dp\fR" 4 +.IX Item "-dp" +.PD +これらの 3 つのオプションは等価です。 +他のリンカとの互換性のために複数の形式がサポートされています。 +再配置可能なファイルを出力するように (\fB\-r\fR によって) +指定された場合でも、コモンシンボルに空間を割り当てます。 +スクリプトコマンドの \f(CW\*(C`FORCE_COMMON_ALLOCATION\*(C'\fR も +同じ効果を持ちます。 +.IP "\fB\-e\fR \fIentry\fR" 4 +.IX Item "-e entry" +.PD 0 +.IP "\fB\-\-entry=\fR\fIentry\fR" 4 +.IX Item "--entry=entry" +.PD +プログラムの実行開始点を示す明示的なシンボルとして、 +デフォルトのエントリポイントの代わりに \fIentry\fR を使用します。 +シンボル \fIentry\fR がなかった場合、リンカは \fIentry\fR を +数字として解釈しようと試み、それを開始番地として使います +(数字は基数を 10 として解釈されます。先頭についた \fB0x\fR は +16 を基数とすることを表し、\fB0\fR は 8 を基数とすることを表します)。 +.IP "\fB\-E\fR" 4 +.IX Item "-E" +.PD 0 +.IP "\fB\-\-export\-dynamic\fR" 4 +.IX Item "--export-dynamic" +.PD +動的にリンクされた実行ファイルを作成する時に、すべてのシンボルを +動的シンボルテーブルに加えます。 +動的シンボルテーブルは、実行時に動的オブジェクトから見えるシンボルの +テーブルです。 +.Sp +もしこのオプションを使用しなかった場合、通常、 +動的シンボルテーブルには、リンク中に指定されたいくつかの +動的オブジェクトから参照されるシンボルのみが含まれます。 +.Sp +他の動的オブジェクトではなく、そのプログラムで定義されているシンボルを +参照し返す必要のある動的オブジェクトを \f(CW\*(C`dlopen\*(C'\fR で +ロードする場合は、おそらくプログラム自身をリンクする時にこのオプションを +使う必要があるでしょう。 +.Sp +出力形式がサポートしていた場合、バージョンスクリプトを使って、 +どのシンボルを動的シンボルテーブルに追加すべきかを制御できます。 +\&\f(CW@ref\fR{\s-1VERSION\s0} 中の \fB\-\-version\-script\fR の記述を +参照してください。 +.IP "\fB\-EB\fR" 4 +.IX Item "-EB" +ビッグエンディアンのオブジェクトをリンクします。 +これはデフォルトの出力形式に影響します。 +.IP "\fB\-EL\fR" 4 +.IX Item "-EL" +リトルエンディアンのオブジェクトをリンクします。 +これはデフォルトの出力形式に影響します。 +.IP "\fB\-f\fR" 4 +.IX Item "-f" +.PD 0 +.IP "\fB\-\-auxiliary\fR \fIname\fR" 4 +.IX Item "--auxiliary name" +.PD +\&\s-1ELF\s0 の共有オブジェクトを生成する際に、内部の \s-1DT_AUXILIARY\s0 +フィールドに、指定した name を設定します。 +これは、共有オブジェクトのシンボルテーブルを、共有オブジェクト +\&\fIname\fR のシンボルテーブルに適用する補助のフィルタとして使う事を、 +動的リンカに対して指示します。 +.Sp +後からこのフィルタオブジェクトに対してプログラムをリンクした場合、 +そのプログラムを実行した時に、動的リンカは +\&\s-1DT_AUXILIARY\s0 フィールドを見ます。 +動的リンカがフィルタオブジェクトからのシンボルを解決する場合は、 +共有オブジェクト \fIname\fR の中に定義があるかどうかをまずチェックします。 +もしそれがあった場合は、フィルタオブジェクト中の定義の代わりに使用されます。 +共有オブジェクト \fIname\fR は、存在しなくても構いません。 +このようにして共有オブジェクト \fIname\fR は、おそらくデバッギングや +マシン特有のパフォーマンスといったある機能の別の実装を提供するために +使用できます。 +.Sp +このオプションは 2 回以上指定されても構いません。 +\&\s-1DT_AUXILIARY\s0 エントリは、コマンドラインに現れた順番に生成されます。 +.IP "\fB\-F\fR \fIname\fR" 4 +.IX Item "-F name" +.PD 0 +.IP "\fB\-\-filter\fR \fIname\fR" 4 +.IX Item "--filter name" +.PD +\&\s-1ELF\s0 の共有オブジェクトを生成する際に、内部の \s-1DT_FILTER\s0 +フィールドに、指定した name を設定します。 +これは、共有オブジェクトのシンボルテーブルを、共有オブジェクト +\&\fIname\fR のシンボルテーブルに適用するフィルタとして使う事を、 +動的リンカに対して指示します。 +.Sp +後からこのフィルタオブジェクトに対してプログラムをリンクした場合、 +そのプログラムを実行した時に、動的リンカは +\&\s-1DT_FILTER\s0 フィールドを見ます。 +動的リンカは、通常のようにフィルタオブジェクトのシンボルテーブルに従って +シンボルを解決しますが、実際には共有オブジェクト \fIname\fR 中に見つかった +定義にリンクします。 +このようにしてフィルタオブジェクトは、オブジェクト \fIname\fR によって +提供されたシンボルのサブセットを選択するのに使用できます。 +.Sp +いくつかの古いリンカは、コンパイルツールチェーンを通して、 +\&\fB\-F\fR オプションを、入力および出力オブジェクトファイル両方の形式を +指定するために使っていました。 +\&\s-1GNU\s0 リンカは、この目的に別のメカニズムを用いています。 +それは \fB\-b\fR, \fB\-\-format\fR, \fB\-\-oformat\fR オプションや、 +リンカスクリプト中の \f(CW\*(C`TARGET\*(C'\fR コマンド、 +そして \f(CW\*(C`GNUTARGET\*(C'\fR 環境変数です。 +\&\s-1GNU\s0 リンカは、\s-1ELF\s0 共有オブジェクトを作らない時には、 +\&\fB\-F\fR オプションを無視します。 +.IP "\fB\-fini\fR \fIname\fR" 4 +.IX Item "-fini name" +\&\s-1ELF\s0 の実行形式もしくは共有オブジェクトを生成する際、 +関数のアドレスに \s-1DT_FINI\s0 を設定することにより、 +実行形式もしくは共有オブジェクトがアンロードされる時に \s-1NAME\s0 を呼びます。 +デフォルトでは、リンカは \f(CW\*(C`_fini\*(C'\fR を、呼ぶべき関数として +使用します。 +.IP "\fB\-g\fR" 4 +.IX Item "-g" +無視されます。 +これは他のツールとの互換性のために提供されています。 +.IP "\fB\-G\fR\fIvalue\fR" 4 +.IX Item "-Gvalue" +.PD 0 +.IP "\fB\-\-gpsize=\fR\fIvalue\fR" 4 +.IX Item "--gpsize=value" +.PD +\&\s-1GP\s0 レジスタを使用して最適化されるオブジェクトの最大サイズを +\&\fIsize\fR に設定します。 +これは、大きいオブジェクトと小さいオブジェクトを異なるセクションに +配置することをサポートしている \s-1MIPS\s0 \s-1ECOFF\s0 のような +オブジェクトファイル形式の場合のみ意味を持ちます。 +他のオブジェクトファイル形式の場合は無視されます。 +.IP "\fB\-h\fR\fIname\fR" 4 +.IX Item "-hname" +.PD 0 +.IP "\fB\-soname=\fR\fIname\fR" 4 +.IX Item "-soname=name" +.PD +\&\s-1ELF\s0 の共有オブジェクトを生成する際に、内部の \s-1DT_SONAME\s0 +フィールドに、指定した name を設定します。 +実行形式が \s-1DT_SONAME\s0 フィールドを持つ共有オブジェクトと +リンクされると、実行形式が実行される時に、動的リンカは +リンカに与えられたファイル名を使う代わりに DT_SONAME フィールドで +指定された共有オブジェクトをロードしようとします。 +.IP "\fB\-i\fR" 4 +.IX Item "-i" +インクリメンタルリンクを行います +(オプション \fB\-r\fR と同じです)。 +.IP "\fB\-init\fR \fIname\fR" 4 +.IX Item "-init name" +\&\s-1ELF\s0 の実行形式もしくは共有オブジェクトを生成する際、 +関数のアドレスに \s-1DT_INIT\s0 を設定することにより、 +実行形式もしくは共有オブジェクトがロードされる時に \s-1NAME\s0 を呼びます。 +デフォルトでは、リンカは \f(CW\*(C`_init\*(C'\fR を、呼ぶべき関数として +使用します。 +.IP "\fB\-l\fR\fIarchive\fR" 4 +.IX Item "-larchive" +.PD 0 +.IP "\fB\-\-library=\fR\fIarchive\fR" 4 +.IX Item "--library=archive" +.PD +アーカイブファイル \fIarchive\fR を、リンクすべきファイルのリストに +追加します。 +このオプションは、何度指定しても構いません。 +\&\fBld\fR は、\fIarchive\fR が指定されるたびに +\&\f(CW\*(C`lib\f(CIarchive\f(CW.a\*(C'\fR を自身のパスリストから探します。 +.Sp +共有ライブラリをサポートするシステムでは、\fBld\fR は、\f(CW\*(C`.a\*(C'\fR +以外のサフィックスを持つライブラリも探すことがあります。 +特に \s-1ELF\s0 や SunOS システムでは、\fBld\fR は、\f(CW\*(C`.a\*(C'\fR +というサフィックスを持つライブラリを探す前に、\f(CW\*(C`.so\*(C'\fR という +サフィックスを持つライブラリをディレクトリから探します。 +慣習により、\f(CW\*(C`.so\*(C'\fR サフィックスは共有ライブラリを示します。 +.Sp +リンカは、コマンドラインで指定されたその場所でのみ、 +1 回だけアーカイブを検索します。 +もしそのアーカイブが、それまでにコマンドラインに現れたオブジェクトでは +定義していないシンボルを定義していた時は、リンカは、そのアーカイブから +適切なファイルを取り込みます。 +しかし、コマンドラインに後から現れたオブジェクトに含まれる +未定義シンボルによって、リンカがアーカイブを再度検索することはありません。 +.Sp +アーカイブを複数回検索するようリンカに強制する方法は、 +\&\fB\-(\fR オプションを参照してください。 +.Sp +同じアーカイブをコマンドライン上に複数回指定しても構いません。 +.Sp +この種のアーカイブ検索は、Unix のリンカでは普通です。 +しかし \s-1AIX\s0 上で \fBld\fR を使用する場合、\s-1AIX\s0 リンカとは +異なった動作をするので注意が必要です。 +.IP "\fB\-L\fR\fIsearchdir\fR" 4 +.IX Item "-Lsearchdir" +.PD 0 +.IP "\fB\-\-library\-path=\fR\fIsearchdir\fR" 4 +.IX Item "--library-path=searchdir" +.PD +パス \fIsearchdir\fR を、\fBld\fR がアーカイブライブラリや \fBld\fR の +制御スクリプトを検索するのに使用するパスのリストに追加します。 +このオプションは、何度指定しても構いません。 +ディレクトリは、コマンドライン上で指定された順に検索されます。 +コマンドライン上で指定されたディレクトリは、デフォルトのディレクトリの +前に検索されます。 +すべての \fB\-L\fR オプションは、オプションの出現した順番によらず、 +すべての \fB\-l\fR オプションに適用されます。 +.Sp +(\fB\-L\fR で指定されない) デフォルトの検索パスの組は、 +\&\fBld\fR がどのエミュレーションモードを使っているか、 +そして場合によってはどのように構成されたかに依存します。 +.Sp +パスは、リンクスクリプト中で \f(CW\*(C`SEARCH_DIR\*(C'\fR +コマンドを用いても指定できます。 +この方法で指定されたディレクトリは、コマンドライン上でリンカスクリプトが +現れた時点で検索されます。 +.IP "\fB\-m\fR\fIemulation\fR" 4 +.IX Item "-memulation" +\&\fIemulation\fR リンカをエミュレートします。 +\&\fB\-\-verbose\fR や \fB\-V\fR オプションで、利用可能なエミュレーションを +リストできます。 +.Sp +\&\fB\-m\fR オプションが指定されていない場合、エミュレーションは、 +\&\f(CW\*(C`LDEMULATION\*(C'\fR 環境変数が定義されていれば +そこから取得されます。 +.Sp +それ以外の場合、デフォルトのエミュレーションは、リンカがどのように +構成されたかに依存します。 +.IP "\fB\-M\fR" 4 +.IX Item "-M" +.PD 0 +.IP "\fB\-\-print\-map\fR" 4 +.IX Item "--print-map" +.PD +リンクマップを標準出力に表示します。 +リンクマップは、以下を含むリンクの情報を提供します: +.RS 4 +.IP "\(bu" 4 +オブジェクトファイルとシンボルが、メモリのどこにマップされるか。 +.IP "\(bu" 4 +コモンシンボルがどのように割り当てられたか。 +.IP "\(bu" 4 +リンクに含まれるすべてのアーカイブメンバ、および +そのアーカイブメンバを取り込むきっかけとなったシンボル。 +.RE +.RS 4 +.RE +.IP "\fB\-n\fR" 4 +.IX Item "-n" +.PD 0 +.IP "\fB\-\-nmagic\fR" 4 +.IX Item "--nmagic" +.PD +セクションのページアラインメントを無効にし、可能であれば +出力に \f(CW\*(C`NMAGIC\*(C'\fR と印を付けます。 +.IP "\fB\-N\fR" 4 +.IX Item "-N" +.PD 0 +.IP "\fB\-\-omagic\fR" 4 +.IX Item "--omagic" +.PD +テキストセクションとデータセクションを読み書き可能に設定します。 +また、データセグメントのページアラインメントも行いません。 +出力形式が Unix 形式のマジックナンバをサポートしている場合、 +出力に \f(CW\*(C`OMAGIC\*(C'\fR と印を付けます。 +.IP "\fB\-o\fR \fIoutput\fR" 4 +.IX Item "-o output" +.PD 0 +.IP "\fB\-\-output=\fR\fIoutput\fR" 4 +.IX Item "--output=output" +.PD +\&\fIoutput\fR を、\fBld\fR によって生成されるプログラムの +名前として使用します。 +このオプションが指定されなかった場合、\fIa.out\fR という名前が +デフォルトで使用されます。 +スクリプトコマンドの \f(CW\*(C`OUTPUT\*(C'\fR によっても、 +出力ファイル名を指定することができます。 +.IP "\fB\-O\fR \fIlevel\fR" 4 +.IX Item "-O level" +\&\fIlevel\fR が 0 より大きい数値であった場合、 +\&\fBld\fR は出力を最適化します。 +これにはとても長い時間がかかりますので、最終的なバイナリの作成時のみ +有効にするべきでしょう。 +.IP "\fB\-q\fR" 4 +.IX Item "-q" +.PD 0 +.IP "\fB\-\-emit\-relocs\fR" 4 +.IX Item "--emit-relocs" +.PD +最終的にリンクされた実行形式中に、再配置セクションと内容を残します。 +これらの情報は、リンク後の分析・最適化ツールが実行形式を正しく変更するのに +必要となるでしょう。 +これは、より大きな実行形式を生成します。 +.Sp +このオプションは、現在 \s-1ELF\s0 プラットフォームでしか +サポートされていません。 +.IP "\fB\-r\fR" 4 +.IX Item "-r" +.PD 0 +.IP "\fB\-\-relocateable\fR" 4 +.IX Item "--relocateable" +.PD +再配置可能な出力を生成します。 +つまり、\fBld\fR への入力として利用できる出力ファイルを生成します。 +これはよく \fI部分リンク\fR と呼ばれます。 +この副作用として、Unix の標準のマジックナンバをサポートする環境では、 +このオプションは出力ファイルのマジックナンバを +\&\f(CW\*(C`OMAGIC\*(C'\fR に設定します。 +このオプションが指定されなかった場合は、 +絶対アドレス値を用いたファイルが生成されます。 +\&\*(C+ プログラムをリンクする場合、 +このオプションはコンストラクタへの参照を解決しません。 +そのような場合は \fB\-Ur\fR を使用してください。 +.Sp +入力ファイルが出力ファイルと同じ形式ではない場合、 +部分リンクは、入力ファイルが再配置セクションを全く持たない時のみ +サポートされます。 +異なった出力形式は、さらなる制限を持つことがあります。 +例えば、ある \f(CW\*(C`a.out\*(C'\fR\ ベースの形式は、 +入力ファイルが異なった形式であった時には、部分リンクを全くサポートしません。 +.Sp +このオプションは、\fB\-i\fR と同じです。 +.IP "\fB\-R\fR \fIfilename\fR" 4 +.IX Item "-R filename" +.PD 0 +.IP "\fB\-\-just\-symbols=\fR\fIfilename\fR" 4 +.IX Item "--just-symbols=filename" +.PD +シンボル名やそのアドレスを \fIfilename\fR から読み込みますが、 +それを再配置したり出力に含めることはしません。 +これにより、出力ファイルが他のプログラムで定義されたメモリの絶対位置を +シンボルで参照できるようになります。 +このオプションは 2 回以上使って構いません。 +.Sp +他の \s-1ELF\s0 リンカとの互換性のため、\fB\-R\fR オプションの後に +ファイル名ではなくディレクトリ名が続いた場合、 +\&\fB\-rpath\fR オプションとして扱われます。 +.IP "\fB\-s\fR" 4 +.IX Item "-s" +.PD 0 +.IP "\fB\-\-strip\-all\fR" 4 +.IX Item "--strip-all" +.PD +すべてのシンボル情報を出力ファイルから削除します。 +.IP "\fB\-S\fR" 4 +.IX Item "-S" +.PD 0 +.IP "\fB\-\-strip\-debug\fR" 4 +.IX Item "--strip-debug" +.PD +(すべてのシンボルではなく) すべてのデバッグ用シンボル情報を +出力ファイルから削除します。 +.IP "\fB\-t\fR" 4 +.IX Item "-t" +.PD 0 +.IP "\fB\-\-trace\fR" 4 +.IX Item "--trace" +.PD +\&\fBld\fR が入力ファイルを処理するたびに、入力ファイル名を表示します。 +.IP "\fB\-T\fR \fIscriptfile\fR" 4 +.IX Item "-T scriptfile" +.PD 0 +.IP "\fB\-\-script=\fR\fIscriptfile\fR" 4 +.IX Item "--script=scriptfile" +.PD +\&\fIscriptfile\fR をリンカスクリプトとして使用します。 +このスクリプトは、(追加されるのではなく) \fBld\fR のデフォルトの +リンカスクリプトを置き換えます。 +したがって、\fIscriptile\fR には、出力ファイルを記述するのに必要な +すべてのことを指定しなければなりません。 +\&\fIscriptfile\fR がカレントディレクトリに存在しない場合、 +\&\f(CW\*(C`ld\*(C'\fR は、すべての \fB\-L\fR オプションに続いて +指定されたディレクトリを検索します。 +複数の \fB\-T\fR オプションは、一つにまとめられます。 +.IP "\fB\-u\fR \fIsymbol\fR" 4 +.IX Item "-u symbol" +.PD 0 +.IP "\fB\-\-undefined=\fR\fIsymbol\fR" 4 +.IX Item "--undefined=symbol" +.PD +強制的に \fIsymbol\fR を未定義シンボルとして出力ファイルに含めます。 +こうすることによって、例えば標準ライブラリからさらにモジュールを +リンクする引き金とすることができます。 +異なるオプション引数を持つことで \fB\-u\fR を繰返し指定することができ、 +未定義シンボルを追加します。 +このオプションは、\f(CW\*(C`EXTERN\*(C'\fR リンカスクリプトコマンドと +同じです。 +.IP "\fB\-Ur\fR" 4 +.IX Item "-Ur" +\&\*(C+ プログラム以外に対しては、このオプションは \fB\-r\fR と同じです。 +再配置可能な出力、つまり \fBld\fR に再度入力可能な出力ファイルを +生成します。 +\&\*(C+ プログラムをリンクする場合、\fB\-r\fR とは異なり、 +\&\fB\-Ur\fR はコンストラクタへの参照を解決します。 +\&\fB\-Ur\fR を使用してリンクされたファイルに対しては、 +\&\fB\-Ur\fR を使用できません。 +コンストラクタのテーブルが一度生成されると、追加することができないのです。 +\&\fB\-Ur\fR は、最後の部分リンクのみに使用するようにして、 +その他の場合は \fB\-r\fR を使用してください。 +.IP "\fB\-\-unique[=\fR\fI\s-1SECTION\s0\fR\fB]\fR" 4 +.IX Item "--unique[=SECTION]" +\&\fI\s-1SECTION\s0\fR に一致した入力セクション毎に、 +個別の出力セクションを生成します。 +オプションのワイルドカード \fI\s-1SECTION\s0\fR 引数がない場合は、 +親なし入力セクション毎に、個別の出力セクションを生成します。 +親なしセクションとは、リンカスクリプト中に +明示的に記述されていないセクションです。 +このオプションは、コマンドライン上で複数回使用できます。 +これによって、通常の同名の入力セクションのマージを行わないようにします。 +これは、リンカスクリプト中での出力セクションの割り当てを上書きします。 +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD +\&\fBld\fR のバージョン番号を表示します。 +\&\fB\-V\fR オプションは、サポートしているエミュレータの一覧も表示します。 +.IP "\fB\-x\fR" 4 +.IX Item "-x" +.PD 0 +.IP "\fB\-\-discard\-all\fR" 4 +.IX Item "--discard-all" +.PD すべてのローカルシンボルを削除します。 - +.IP "\fB\-X\fR" 4 +.IX Item "-X" +.PD 0 +.IP "\fB\-\-discard\-locals\fR" 4 +.IX Item "--discard-locals" +.PD +すべての一時的なローカルシンボルを削除します。 +ほとんどのターゲットにおいて、それは名前が \fBL\fR で始まる +すべてのローカルシンボルです。 +.IP "\fB\-y\fR \fIsymbol\fR" 4 +.IX Item "-y symbol" +.PD 0 +.IP "\fB\-\-trace\-symbol=\fR\fIsymbol\fR" 4 +.IX Item "--trace-symbol=symbol" +.PD +リンクされたファイルのうち、\fIsymbol\fR が現れるファイル名を表示します。 +このオプションは何度でも指定できます。 +多くのシステム上では、シンボル名の前にアンダスコアを +つける必要があるでしょう。 +.Sp +このオプションは、リンク中に未定義シンボルが発見されたが、 +それがどこから参照されているのかがわからない場合に役に立ちます。 +.IP "\fB\-Y\fR \fIpath\fR" 4 +.IX Item "-Y path" +デフォルトのライブラリ検索パスに \fIpath\fR を追加します。 +このオプションは、Solaris との互換性のために存在します。 +.IP "\fB\-z\fR \fIkeyword\fR" 4 +.IX Item "-z keyword" +認識されるキーワードは、\f(CW\*(C`initfirst\*(C'\fR, +\&\f(CW\*(C`interpose\*(C'\fR, \f(CW\*(C`loadfltr\*(C'\fR, +\&\f(CW\*(C`nodefaultlib\*(C'\fR, \f(CW\*(C`nodelete\*(C'\fR, +\&\f(CW\*(C`nodlopen\*(C'\fR, \f(CW\*(C`nodump\*(C'\fR, +\&\f(CW\*(C`now\*(C'\fR, \f(CW\*(C`origin\*(C'\fR, +\&\f(CW\*(C`combreloc\*(C'\fR, \f(CW\*(C`nocombreloc\*(C'\fR, +\&\f(CW\*(C`nocopyreloc\*(C'\fR です。 +他のキーワードは、Solaris との互換性のために無視されます。 +\&\f(CW\*(C`initfirst\*(C'\fR は、実行時にそのオブジェクトが +他のオブジェクトよりも先に初期化されるという印を付けます。 +\&\f(CW\*(C`interpose\*(C'\fR は、主実行形式以外のすべてのシンボルの前に、 +そのオブジェクトのシンボルテーブルを挿入するという印を付けます。 +\&\f(CW\*(C`loadfltr\*(C'\fR は、実行時にそのオブジェクトのフィルタが +直ちに実行されるという印を付けます。 +\&\f(CW\*(C`nodefaultlib\*(C'\fR は、このオブジェクトの依存関係を検索する際、 +デフォルトのライブラリ検索パスを無視するという印を付けます。 +\&\f(CW\*(C`nodelete\*(C'\fR は、そのオブジェクトが実行時に +アンロードされないという印を付けます。 +\&\f(CW\*(C`nodlopen\*(C'\fR は、そのオブジェクトに +\&\f(CW\*(C`dlopen\*(C'\fR を適用できないという印を付けます。 +\&\f(CW\*(C`nodump\*(C'\fR は、そのオブジェクトが +\&\f(CW\*(C`dldump\*(C'\fR によってダンプできないという印を付けます。 +\&\f(CW\*(C`now\*(C'\fR は、そのオブジェクトが +実行時遅延バインディングではないという印を付けます。 +\&\f(CW\*(C`origin\*(C'\fR は、そのオブジェクトが \f(CW$ORIGIN\fR を +含んでいるかもしれないという印を付けます。 +\&\f(CW\*(C`defs\*(C'\fR は、未定義シンボルを許可しません。 +\&\f(CW\*(C`combreloc\*(C'\fR は、複数の再配置可能セクションを結合し、 +ソートして、動的シンボル検索のキャッシュを可能にします。 +\&\f(CW\*(C`nocombreloc\*(C'\fR は、複数の再配置可能セクションの結合を +無効にします。 +\&\f(CW\*(C`nocopyreloc\*(C'\fR は、再配置可能セクションの複製の生成を +無効にします。 +.IP "\fB\-(\fR \fIarchives\fR \fB\-)\fR" 4 +.IX Item "-( archives -)" +.PD 0 +.IP "\fB\-\-start\-group\fR \fIarchives\fR \fB\-\-end\-group\fR" 4 +.IX Item "--start-group archives --end-group" +.PD +\&\fIarchives\fR は、アーカイブファイルのリストを指定します。 +これらはファイル名そのものでも、\fB\-l\fR オプションでも構いません。 +.Sp +指定されたアーカイブは、新たな未定義参照がなくなるまで繰返し検索されます。 +通常、アーカイブは、コマンドラインで指定された順番で 1 回だけ検索されます。 +そのアーカイブ中のシンボルが、コマンドライン上の後ろに現れた +アーカイブ中のオブジェクトが参照する未定義シンボルを +解決するのに必要な場合、リンカはその参照を解決することができません。 +アーカイブをグループ化すると、すべての可能な参照が解決されるまで、 +それらのすべてのアーカイブは繰返し検索されます。 +.Sp +このオプションを使用すると、パフォーマンスが大きく落ちます。 +これを使うのは、2 つ以上のアーカイブ中で、参照の循環が避けられない +場合のみに使用するのがよいでしょう。 +.IP "\fB\-assert\fR \fIkeyword\fR" 4 +.IX Item "-assert keyword" +このオプションは、SunOS との互換性のために無視されます。 +.IP "\fB\-Bdynamic\fR" 4 +.IX Item "-Bdynamic" +.PD 0 +.IP "\fB\-dy\fR" 4 +.IX Item "-dy" +.IP "\fB\-call_shared\fR" 4 +.IX Item "-call_shared" +.PD +動的ライブラリとリンクします。 +これは、共有ライブラリをサポートするプラットフォーム上でのみ +意味を持ちます。 +このオプションは、そのようなプラットフォーム上では、 +普通デフォルトとなっています。 +このオプションに異なる形式があるのは、様々なシステムとの互換性のためです。 +このオプションは、コマンド上で何度でも使用することができます。 +これは後に続く \fB\-l\fR オプションのライブラリ検索に影響します。 +.IP "\fB\-Bgroup\fR" 4 +.IX Item "-Bgroup" +動的セクション中の \f(CW\*(C`DT_FLAGS_1\*(C'\fR エントリの +\&\f(CW\*(C`DF_1_GROUP\*(C'\fR フラグを設定します。 +これによって、動的リンカがこのオブジェクトとその依存関係の検索を +グループ内でのみ実行するようになります。 +\&\fB\-\-no\-undefined\fR が暗黙に指定されます。 +このオプションは、共有ライブラリをサポートする +\&\s-1ELF\s0 プラットホーム上でのみ意味を持ちます。 +.IP "\fB\-Bstatic\fR" 4 +.IX Item "-Bstatic" +.PD 0 +.IP "\fB\-dn\fR" 4 +.IX Item "-dn" +.IP "\fB\-non_shared\fR" 4 +.IX Item "-non_shared" +.IP "\fB\-static\fR" 4 +.IX Item "-static" +.PD +共有ライブラリをリンクしません。 +これは、共有ライブラリをサポートするプラットフォーム上でのみ +意味を持ちます。 +このオプションに異なる形式があるのは、様々なシステムとの互換性のためです。 +このオプションは、コマンドライン上で何度でも使用することができます。 +これは後に続く \fB\-l\fR オプションのライブラリ検索に影響します。 +.IP "\fB\-Bsymbolic\fR" 4 +.IX Item "-Bsymbolic" +共有ライブラリを生成する際に、その共有ライブラリ中に定義があれば、 +グローバルシンボルへの参照をその定義に結びつけます。 +通常、共有ライブラリをリンクしたプログラムは、 +その共有ライブラリ中の定義を上書きできます。 +このオプションは、共有ライブラリをサポートする +\&\s-1ELF\s0 プラットホーム上でのみ意味を持ちます。 +.IP "\fB\-\-check\-sections\fR" 4 +.IX Item "--check-sections" +.PD 0 +.IP "\fB\-\-no\-check\-sections\fR" 4 +.IX Item "--no-check-sections" +.PD +セクションアドレスが割り当てられた後、それらのアドレスが重なって +いないかどうかのチェックをしないようリンカに指示します。 +通常、リンカはチェックを行い、重なりを発見した時は +適切なエラーメッセージを出力します。 +リンカは、オーバレイセクションのことを知っており、 +それを生成することを許可します。 +コマンドラインスイッチ \fB\-\-check\-sections\fR を使用することで、 +デフォルトの動作に戻せます。 +.IP "\fB\-\-cref\fR" 4 +.IX Item "--cref" +相互参照テーブルを出力します。 +リンカマップファイルが生成される場合、 +相互参照テーブルはマップファイルに出力されます。 +それ以外の場合、標準出力に出力されます。 +.Sp +テーブル形式は、意図的に簡単にしているので、 +必要な場合はスクリプトで簡単に処理することができます。 +シンボルは、名前でソートされて出力されます。 +それぞれのシンボル毎に、ファイル名がリストされます。 +シンボルが定義されている場合は、リストの最初のファイルに +その定義が含まれています。 +残りのファイルは、そのシンボルへの参照を含んでいます。 +.IP "\fB\-\-no\-define\-common\fR" 4 +.IX Item "--no-define-common" +このオプションは、コモンシンボルへのアドレス割り当てを抑制します。 +スクリプトコマンド \f(CW\*(C`INHIBIT_COMMON_ALLOCATION\*(C'\fR は、 +同じ効果を持ちます。 +.Sp +\&\fB\-\-no\-define\-common\fR オプションは、コモンシンボルへアドレスを +割り当てる判断を、出力ファイルのタイプの選択から切り離します。 +このオプションを指定しない場合は、再配置不可の出力タイプによって、 +アドレスは強制的にコモンシンボルへ割り当てられます。 +\&\fB\-\-no\-define\-common\fR を使用することにより、共有ライブラリから +参照されるコモンシンボルは、主プログラムのアドレスのみに割り当てられます。 +このオプションは、共有ライブラリ中の重複した未使用領域を削除します。 +また、動的シンボル解決するために特殊な検索パスを持つたくさんの +動的モジュールがある場合、間違った重複を解決する際に起こり得る混乱を +防ぎます。 +.IP "\fB\-\-defsym\fR \fIsymbol\fR\fB=\fR\fIexpression\fR" 4 +.IX Item "--defsym symbol=expression" +\&\fIexpression\fR で指定される絶対アドレスを含んだ +グローバルシンボルを、出力ファイルに生成します。 +複数のシンボルを定義するために、コマンドライン上で必要な回数だけ +このオプションを使用できます。 +\&\fIexpression\fR には、限定された形式の算術演算がサポートされてます。 +16 進定数や存在するシンボル名が使用でき、 +16 進定数やシンボルの加減算に \f(CW\*(C`+\*(C'\fR や \f(CW\*(C`\-\*(C'\fR を +使用できます。 +もっと複雑な式が必要であれば、スクリプトからリンカのコマンド言語を +使用することを検討してください。 +\&\fI注意:\fR \fIsymbol\fR や等号 (``\fB=\fR'')、\fIexpression\fR の間に +空白を入れてはいけません。 +.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4 +.IX Item "--demangle[=style]" +.PD 0 +.IP "\fB\-\-no\-demangle\fR" 4 +.IX Item "--no-demangle" +.PD +これらのオプションは、エラーメッセージやその他の出力に含まれる +シンボル名をデマングルするかどうかを制御します。 +デマングルする場合、リンカはシンボル名を読みやすい形式で +表現しようと試みます。 +つまりリンカは、先頭のアンダスコアがオブジェクトファイル形式で +使用されていた場合、それを取り除き、\*(C+ のマングルされたシンボル名を +ユーザが読みやすい名前に変換します。 +コンパイラによってマングル形式は異なります。 +デマングル形式引数を指定することにより、使用しているコンパイラに対応した +デマングル形式を選択できます。 +リンカは、環境変数 \fB\s-1COLLECT_NO_DEMANGLE\s0\fR が設定されていない限り、 +デフォルトでデマングルします。 +これらのオプションによって、デフォルトを上書きできます。 +.IP "\fB\-\-dynamic\-linker\fR \fIfile\fR" 4 +.IX Item "--dynamic-linker file" +動的リンカの名前を設定します。 +これは、動的にリンクされる \s-1ELF\s0 実行形式を生成する時のみ +意味があります。 +通常は、デフォルトの動的リンカで正しいはずです。 +自分が何をしようとしているのかがわかってる場合以外は、 +使用しないでください。 +.IP "\fB\-\-embedded\-relocs\fR" 4 +.IX Item "--embedded-relocs" +このオプションは、\s-1GNU\s0 コンパイラとアセンブラに \-membedded\-pic +オプションを指定して生成した \s-1MIPS\s0 の埋め込み \s-1PIC\s0 コードを +リンクする時のみ意味があります。 +これを指定すると、リンカはあるテーブルを生成します。 +このテーブルは、ポインタの値に静的に初期化されているすべてのデータを、 +実行時に再配置するために使われます。 +詳細は、testsuite/ld\-empic のコードを参照してください。 +.IP "\fB\-\-fatal\-warnings\fR" 4 +.IX Item "--fatal-warnings" +すべての警告を、エラーとして扱います。 +.IP "\fB\-\-force\-exe\-suffix\fR" 4 +.IX Item "--force-exe-suffix" +出力ファイルのサフィックスが .exe となるようにします。 +.Sp +このオプションを指定すると、無事に生成され完全にリンクされた +出力ファイルに \f(CW\*(C`.exe\*(C'\fR や \f(CW\*(C`.dll\*(C'\fR という +サフィックスがついていなかった場合、リンカは出力ファイルを、同じ名前に +\&\f(CW\*(C`.exe\*(C'\fR サフィックスをつけたファイルにコピーします。 +このオプションは、Microsoft Windows ホスト上で、 +未修正の Unix 用の makefile を使用する場合に便利です。 +というのも、Windows のいくつかのバージョンでは、 +\&\f(CW\*(C`.exe\*(C'\fR サフィックスがついていないイメージを +実行できないからです。 +.IP "\fB\-\-no\-gc\-sections\fR" 4 +.IX Item "--no-gc-sections" +.PD 0 +.IP "\fB\-\-gc\-sections\fR" 4 +.IX Item "--gc-sections" +.PD +未使用の入力セクションのガーベージコレクションを有効にします。 +このオプションをサポートしていないターゲット上では無視されます。 +このオプションは、\fB\-r\fR とは互換性がありませんし、 +動的リンクと一緒に使うべきでもありません。 +デフォルトの動作 (ガーベージコレクションを実行しない) に戻すには、 +コマンドラインで \fB\-\-no\-gc\-sections\fR を指定してください。 +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +コマンドラインオプションの概要を標準出力に表示し、終了します。 +.IP "\fB\-\-target\-help\fR" 4 +.IX Item "--target-help" +ターゲット固有のオプションの要約を標準出力に表示し、終了します。 +.IP "\fB\-Map\fR \fImapfile\fR" 4 +.IX Item "-Map mapfile" +リンクマップをファイル \fImapfile\fR へ出力します。 +前出の \fB\-M\fR オプションの記述を参照してください。 +.IP "\fB\-\-no\-keep\-memory\fR" 4 +.IX Item "--no-keep-memory" +通常 \fBld\fR は、入力ファイルのシンボルテーブルをメモリに +キャッシュすることで、メモリ使用量よりも速度を優先します。 +このオプションを指定すると、\fBld\fR は、必要に応じて +シンボルテーブルを読むことで、メモリ使用量を最小にします。 +これは、大きな実行形式をリンクする際に、\fBld\fR が +メモリ空間を使い果たしてしまうような場合に必要となります。 +.IP "\fB\-\-no\-undefined\fR" 4 +.IX Item "--no-undefined" +.PD 0 +.IP "\fB\-z defs\fR" 4 +.IX Item "-z defs" +.PD +通常、非シンボル的共有ライブラリを作成する場合、 +未定義シンボルはそのまま置いておかれ、実行時ローダによって解決されます。 +これらのオプションは、そのような未定義シンボルを許しません。 +.IP "\fB\-\-allow\-shlib\-undefined\fR" 4 +.IX Item "--allow-shlib-undefined" +\&\-\-no\-undefined が設定されていても、共有オブジェクト中の +未定義シンボルを許可します。 +この実際の結果は、通常のオブジェクト中の未定義シンボルはエラーを +引き起こしますが、共有オブジェクト中の未定義シンボルは無視されます。 +no_undefined の実装は、未定義シンボルによって動的リンカが +詰まってしまうことを想定しています。 +しかし、共有ライブラリに未定義シンボルが含まれてるのが正常である +システムが、少なくとも 1 つ (BeOS) あります。 +このシステムでは、現在のアーキテクチャに最も適切な関数を選択するよう、 +ロード時にカーネルがパッチを当てます。 +つまり、最も適切な memset 関数を動的に選択するのです。 +どうやら \s-1HPPA\s0 共有ライブラリに未定義シンボルが含まれるのも +普通のことのようです。 +.IP "\fB\-\-no\-warn\-mismatch\fR" 4 +.IX Item "--no-warn-mismatch" +通常 \fBld\fR は、不適当な入力ファイルをリンクしようとした場合、 +エラーを発します。 +例えば、異なるプロセッサ向け、もしくは異なるエンディアン向けに +コンパイルされたものであるという場合です。 +このオプションを指定すると、\fBld\fR は、このような起き得るエラーを +だまって許可します。 +このオプションは、リンカのエラーが適切でないと分かっている +特殊なことした時のみ使用し、使用の際には注意しなくてはなりません。 +.IP "\fB\-\-no\-whole\-archive\fR" 4 +.IX Item "--no-whole-archive" +以後に続くアーカイブファイルに対して、 +\&\fB\-\-whole\-archive\fR オプションの効果を無効にします。 +.IP "\fB\-\-noinhibit\-exec\fR" 4 +.IX Item "--noinhibit-exec" +利用可能ならいつも、実行形式の出力ファイルを残しておきます。 +普通リンカは、リンク処理中にエラーが発生した場合、 +出力ファイルを生成しません。 +どんなエラーが発生しても、出力ファイルを書かずに終了します。 +.IP "\fB\-nostdlib\fR" 4 +.IX Item "-nostdlib" +コマンドライン上で明示的に指定されたライブラリディレクトリのみを検索します。 +リンカスクリプト中で指定されたライブラリディレクトリは、 +(コマンドライン上で指定されたリンカスクリプトであっても) 無視されます。 +.IP "\fB\-\-oformat\fR \fIoutput-format\fR" 4 +.IX Item "--oformat output-format" +\&\fBld\fR は、2 種類以上のオブジェクトファイルをサポートするように +構成することができます。 +\&\fBld\fR がそのように構成されていた場合、\fB\-\-oformat\fR オプションを +用いて、出力ファイルのバイナリ形式を指定することができます。 +しかし \fBld\fR が別のオブジェクト形式をサポートするよう +構成されていたとしても、通常はこのオプションを指定する必要はありません。 +というのも、\fBld\fR は、それぞれのマシン上で最もありふれた形式を +デフォルトの出力形式とするよう構成されているはずだからです。 +\&\fIoutput-format\fR はテキスト文字列で、\s-1BFD\s0 ライブラリによって +サポートされている特定の形式の名前です +(\fBobjdump \-i\fR を用いて、利用可能なバイナリ形式をリストできます)。 +スクリプトコマンド \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR でも、出力形式を +指定することができますが、このオプションによって上書きされます。 +.IP "\fB\-qmagic\fR" 4 +.IX Item "-qmagic" +このオプションは、Linux 互換性のために無視されます。 +.IP "\fB\-Qy\fR" 4 +.IX Item "-Qy" +このオプションは、\s-1SVR4\s0 互換性のために無視されます。 +.IP "\fB\-\-relax\fR" 4 +.IX Item "--relax" +マシン依存の効果を持つオプションです。 +このオプションをサポートしているターゲットは、少数です。 +.Sp +いくつかのプラットホームでは、\fB\-\-relax\fR オプションは、 +リンカがプログラム中のアドレッシングを解決できる場合に可能となる +大域的な最適化を実行します。 +これは、出力オブジェクトファイル中のアドレスモードの緩和や、 +新規命令の合成などです。 +.Sp +いくつかのプラットホーム上では、このようなリンク時の大域的な最適化によって、 +生成された実行形式のシンボリックデバッグが不可能となる場合があります。 +不可能になることが知られているのは、松下の \s-1MN10200\s0 や +\&\s-1MN10300\s0 プロセッサファミリです。 +.Sp +これがサポートされていないプラットホームでは、 +\&\fB\-\-relax\fR は受け付けられますが、無視されます。 +.IP "\fB\-\-retain\-symbols\-file\fR \fIfilename\fR" 4 +.IX Item "--retain-symbols-file filename" +ファイル \fIfilename\fR 中にリストされたシンボルのみを残し、 +他のシンボルをすべて破棄します。 +\&\fIfilename\fR は、1 行毎に 1 つのシンボル名が書いてある +単なる平坦なファイルです。 +このオプションは特に、実行時のメモリを節約するために、 +1 つの大きい大域的なシンボルテーブルが徐々に増えていく +(VxWorks のような) 環境で役にたちます。 +.Sp +\&\fB\-\-retain\-symbols\-file\fR は、未定義シンボルや +再配置に必要なシンボルは廃棄しません。 +.Sp +\&\fB\-\-retain\-symbols\-file\fR は、 +コマンドライン上で 1 回しか指定することができません。 +これは、\fB\-s\fR や \fB\-S\fR を無効にします。 +.IP "\fB\-rpath\fR \fIdir\fR" 4 +.IX Item "-rpath dir" +実行時ライブラリ検索パスへディレクトリを追加します。 +これは、\s-1ELF\s0 実行形式を共有オブジェクトとリンクする時に +使用されます。 +すべての \fB\-rpath\fR の引数は結合され、動的リンカに渡されます。 +動的リンカは、これらを用いて実行時に共有オブジェクトを検索します。 +\&\fB\-rpath\fR オプションは、明示的にリンクされる共有オブジェクトによって +必要とされる共有オブジェクトを検索するのにも使用されます。 +これについては、\fB\-rpath\-link\fR オプションの記述を参照してください。 +\&\s-1ELF\s0 実行形式をリンクする時に \fB\-rpath\fR が使用されてない場合、 +環境変数 \f(CW\*(C`LD_RUN_PATH\*(C'\fR の内容が定義されていれば、 +それが使われます。 +.Sp +\&\fB\-rpath\fR オプションは、SunOS 上でも使用されます。 +SunOS 上ではデフォルトで、リンカは指定されたすべての +\&\fB\-L\fR オプションから実行時検索パスを作成します。 +\&\fB\-rpath\fR オプションが指定された場合、実行時検索パスは \fB\-L\fR +オプションを無視し、\fB\-rpath\fR オプションのみを用いて作成されます。 +このオプションは、gcc を使用する時に役に立ちます。 +というのは、gcc は沢山の \fB\-L\fR オプションを追加し、それは +\&\s-1NFS\s0 マウントされたファイルシステム上にあるかもしれないからです。 +.Sp +他の \s-1ELF\s0 リンカとの互換性のために、\fB\-R\fR オプションの後に +ファイル名ではなくディレクトリ名が続いた場合、 +\&\fB\-rpath\fR オプションとして扱われます。 +.IP "\fB\-rpath\-link\fR \fI\s-1DIR\s0\fR" 4 +.IX Item "-rpath-link DIR" +\&\s-1ELF\s0 もしくは SunOS を使用した場合、ある共有ライブラリが +もう 1 つ別の共有ライブラリを要求することがあります。 +これは、\f(CW\*(C`ld \-shared\*(C'\fR としてリンクした時、 +入力ファイルの 1 つに共有ライブラリが含まれている場合に起こります。 +.Sp +非共有、再配置不可のリンクを行う時にリンカがそのような依存性に出合うと、 +それが明示的にリンクされてない場合、リンカは要求された共有ライブラリを +自動的に探し、リンクに含めようとします。 +そのような場合、\fB\-rpath\-link\fR オプションは、検索する最初の +ディレクトリの組を指定します。 +\&\fB\-rpath\-link\fR オプションで一連のディレクトリ名を指定するには、 +コロン区切りの名前のリストで指定してもいいですし、 +複数回オプションを指定しても構いません。 +.Sp +このオプションは注意深く使用しなければなりません。 +というのも、これはコンパイル時に共有ライブラリに埋め込まれた +検索パスを上書きしてしまうからです。 +そのような場合、動的リンカが使用するのとは違った検索パスが、 +意図せずに使用されてしまうことがあります。 +.Sp +リンカは、要求された共有ライブラリを探す際に以下の検索パスを使用します。 +.RS 4 +.IP "1." 4 +\&\fB\-rpath\-link\fR オプションによって指定されたすべてのディレクトリ。 +.IP "2." 4 +\&\fB\-rpath\fR オプションで指定されたすべてのディレクトリ。 +\&\fB\-rpath\fR と \fB\-rpath\-link\fR の違いは、\fB\-rpath\fR オプションで +指定されたディレクトリは、実行形式に含められ実行時に使用されますが、 +\&\fB\-rpath\-link\fR オプションは、リンク時にのみ影響します。 +これは、ネイティブのリンカ専用です。 +.IP "3." 4 +\&\s-1ELF\s0 システム上で \fB\-rpath\fR もしくは +\&\f(CW\*(C`rpath\-link\*(C'\fR オプションが使われなかった場合、 +環境変数 \f(CW\*(C`LD_RUN_PATH\*(C'\fR の内容が検索されます。 +これは、ネイティブのリンカ専用です。 +.IP "4." 4 +SunOS 上で \fB\-rpath\fR が使われなかった場合、 +\&\fB\-L\fR オプションで指定されたすべてのディレクトリが検索されます。 +.IP "5." 4 +ネイティブのリンカの場合、環境変数 \f(CW\*(C`LD_LIBRARY_PATH\*(C'\fR +の内容。 +.IP "6." 4 +ネイティブの \s-1ELF\s0 リンカの場合、共有ライブラリの +\&\f(CW\*(C`DT_RUNPATH\*(C'\fR もしくは \f(CW\*(C`DT_RPATH\*(C'\fR 中の +ディレクトリが、必要とされる共有ライブラリの検索に使用されます。 +\&\f(CW\*(C`DT_RUNPATH\*(C'\fR エントリが存在した場合、 +\&\f(CW\*(C`DT_RPATH\*(C'\fR エントリは無視されます。 +.IP "7." 4 +デフォルトのディレクトリ。 +通常、\fI/lib\fR と \fI/usr/lib\fR です。 +.IP "8." 4 +\&\s-1ELF\s0 システム上のネイティブなリンカの場合、 +ファイル \fI/etc/ld.so.conf\fR が存在していたら、 +そのファイル中のディレクトリのリスト。 +.RE +.RS 4 +.Sp +要求された共有ライブラリが見つからない場合、 +リンカは警告を出しリンクを継続します。 +.RE +.IP "\fB\-shared\fR" 4 +.IX Item "-shared" +.PD 0 +.IP "\fB\-Bshareable\fR" 4 +.IX Item "-Bshareable" +.PD +共有ライブラリを作成します。 +現在これは、\s-1ELF\s0, \s-1XCOFF\s0, SunOS 上のみでサポートされています。 +SunOS 上では、\fB\-e\fR オプションが使用されておらず、リンク時に +未定義シンボルが存在していれば、リンカは自動的に共有ライブラリを作成します。 +.IP "\fB\-\-sort\-common\fR" 4 +.IX Item "--sort-common" +このオプションを指定すると、\fBld\fR は、コモンシンボルを +適切な出力セクションに配置する際にサイズでソートします。 +最初にすべての 1 バイトのシンボルが配置され、次にすべての 2 バイトのシンボル、 +そしてすべての 4 バイトのシンボル、そしてその他のシンボルが配置されます。 +このようにするのは、アラインメントの制約によってシンボルの間に +隙間が生じるのを防ぐためです。 +.IP "\fB\-\-split\-by\-file [\fR\fIsize\fR\fB]\fR" 4 +.IX Item "--split-by-file [size]" +\&\fB\-\-split\-by\-reloc\fR と同じですが、各々の入力ファイルに対し、 +\&\fIsize\fR に達するたびに新しい出力セクションを作成します。 +\&\fIsize\fR が指定されなかった場合、デフォルトのサイズは 1 です。 +.IP "\fB\-\-split\-by\-reloc [\fR\fIcount\fR\fB]\fR" 4 +.IX Item "--split-by-reloc [count]" +ファイル中の 1 つの出力セクションが、\fIcount\fR より多い再配置情報を +含まないよう、出力ファイル中に余分なセクションを作成しようとします。 +これは、\s-1COFF\s0 オブジェクト形式のリアルタイムカーネルに +ダウンロードするための巨大な再配置可能ファイルを作成する時に役に立ちます。 +というのも、\s-1COFF\s0 では 1 つのセクションは 65535 を越える +再配置情報を表現することができないからです。 +このオプションは、任意のセクションをサポートしていない +オブジェクトファイル形式では、うまくいかないことに注意してください。 +リンカは、分配し直す際に個々の入力セクションを分割しないので、 +1 つの入力セクションが \fIcount\fR を越える再配置情報を含んでいる場合、 +1 つの出力セクションには、それだけの数の再配置情報を含むことになります。 +\&\fIcount\fR のデフォルト値は 32768 です。 +.IP "\fB\-\-stats\fR" 4 +.IX Item "--stats" +実行時間やメモリ使用量などといったリンカの処理に関する統計情報を、 +計算し出力します。 +.IP "\fB\-\-traditional\-format\fR" 4 +.IX Item "--traditional-format" +ターゲットによっては、\fBld\fR の出力が既存のリンカの出力と +いくつかの点で異なることがあります。 +このスイッチを指定すると、 \fBld\fR は既存のリンカの形式を使います。 +.Sp +例えば SunOS 上では、\fBld\fR はシンボル文字列テーブル内の +重複したエントリを 1 つにします。 +これによって、完全なデバッグ情報を持つ出力ファイルのサイズが、 +30% 以上も小さくなります。 +残念なことに、SunOS の \f(CW\*(C`dbx\*(C'\fR プログラムは、 +生成されたファイルを読み込むことができません +(\f(CW\*(C`gdb\*(C'\fR では問題ありません)。 +\&\fB\-\-traditional\-format\fR スイッチを指定すると、 +重複したエントリを 1 つにまとめません。 +.IP "\fB\-\-section\-start\fR \fIsectionname\fR\fB=\fR\fIorg\fR" 4 +.IX Item "--section-start sectionname=org" +出力ファイル中のセクションを、\fIorg\fR で指定された絶対アドレスに +配置します。 +複数のセクションを配置させる場合、このオプションは、 +必要に応じてコマンドライン中に何度でも指定することができます。 +\&\fIorg\fR は、単独の 16 進数でなければなりません。 +他のリンカとの互換性のために、16 進数の先頭に通常つける \fB0x\fR を +省略することができます。 +\&\fIsectionname\fR と等号 (``\fB=\fR'')、\fIorg\fR の間には +空白をはさむことができないことに注意してください。 +.IP "\fB\-Tbss\fR \fIorg\fR" 4 +.IX Item "-Tbss org" +.PD 0 +.IP "\fB\-Tdata\fR \fIorg\fR" 4 +.IX Item "-Tdata org" +.IP "\fB\-Ttext\fR \fIorg\fR" 4 +.IX Item "-Ttext org" +.PD +\&\fIorg\fR を、出力ファイル中の \f(CW\*(C`bss\*(C'\fR、 +\&\f(CW\*(C`data\*(C'\fR、 \f(CW\*(C`text\*(C'\fR セグメントの +\&\-\-\- それぞれ \-\-\- の開始アドレスとします。 +\&\fIorg\fR は、単独の 16 進数でなければなりません。 +他のリンカとの互換性のために、16 進数の先頭に通常つける \fB0x\fR を +省略することができます。 +.IP "\fB\-\-dll\-verbose\fR" 4 +.IX Item "--dll-verbose" +.PD 0 +.IP "\fB\-\-verbose\fR" 4 +.IX Item "--verbose" +.PD +\&\fBld\fR のバージョン番号と、サポートしているリンカエミュレーションの +一覧を表示します。 +また、どの入力ファイルがオープンできて、 +どの入力ファイルがオープンできないのかも表示します。 +さらに、使用されるリンカスクリプトも表示します。 +.IP "\fB\-\-version\-script=\fR\fIversion-scriptfile\fR" 4 +.IX Item "--version-script=version-scriptfile" +リンカに、バージョンスクリプト名を指定します。 +これは通常、共有ライブラリを生成する際に使われ、生成するライブラリの +バージョン階層についての付加的な情報を指定します。 +このオプションは、共有ライブラリをサポートする \s-1ELF\s0 +プラットフォーム上でのみ意味があります。 +.IP "\fB\-\-warn\-common\fR" 4 +.IX Item "--warn-common" +コモンシンボルが、別の共有シンボルやシンボル定義と結びつけられた時に +警告を出します。 +Unix のリンカは、このちょっといい加減な慣習を許していますが、 +他のオペレーティングシステム上のリンカは、許していません。 +このオプションを指定すると、グローバルシンボルが結びつけられることから来る +潜在的な問題を発見することができます。 +残念なことに、C ライブラリの中にはこの慣習を使用しているものがあり、 +プログラム中だけでなくライブラリ中のシンボルに対しても、 +この警告が出されることがあります。 +.Sp +グローバルシンボルには 3 種類あります。 +以下で C 言語の例を使って説明します。 +.RS 4 +.IP "\fBint i = 1;\fR" 4 +.IX Item "int i = 1;" +定義です。 +出力ファイル中の初期化済みデータセクションに置かれます。 +.IP "\fBextern int i;\fR" 4 +.IX Item "extern int i;" +未定義参照です。 +メモリは割り当てられません。 +この変数に対する定義かコモンシンボルが、どこかになくてはなりません。 +.IP "\fBint i;\fR" 4 +.IX Item "int i;" +コモンシンボルです。 +変数に対して、(1 つもしくは複数の) コモンシンボルしかない場合、 +出力ファイルの非初期化データ領域に置かれます。 +リンカは、同じ変数に対する複数のコモンシンボルを、1 つのコモンシンボルへと +まとめます。 +それらのサイズか異なっていた場合、最も大きなサイズの領域が取られます。 +同じ変数に対して定義があった場合、リンカは共有シンボルを宣言に変換します。 +.RE +.RS 4 +.Sp +\&\fB\-\-warn\-common\fR オプションを指定すると、 +リンカは 5 種類の警告を出します。 +それぞれの警告は、2 行からなっています。 +最初の行は、今出会ったシンボルを説明しており、 +次の行は、以前に同じ名前で出会ったシンボルを説明します。 +2 つのシンボルの片方、もしくは両方は、コモンシンボルです。 +.IP "1." 4 +シンボルに対する定義が既に存在するため、 +コモンシンボルを参照に変換します。 +.Sp +.Vb 3 +\& I(I
): warning: common of `I' +\& overridden by definition +\& I(I
): warning: defined here +.Ve +.IP "2." 4 +シンボルに対する定義が後から現れたため、 +コモンシンボルを参照に変換します。 +これは上記のケースと同様ですが、シンボルの現れた順番が違います。 +.Sp +.Vb 3 +\& I(I
): warning: definition of `I' +\& overriding common +\& I(I
): warning: common is here +.Ve +.IP "3." 4 +コモンシンボルを、既出の同じサイズのコモンシンボルにマージします。 +.Sp +.Vb 3 +\& I(I
): warning: multiple common +\& of `I' +\& I(I
): warning: previous common is here +.Ve +.IP "4." 4 +コモンシンボルを、既出の、より大きいコモンシンボルにマージします。 +.Sp +.Vb 3 +\& I(I
): warning: common of `I' +\& overridden by larger common +\& I(I
): warning: larger common is here +.Ve +.IP "5." 4 +コモンシンボルを、既出の、より小さいコモンシンボルにマージします。 +これは上記のケースと同様ですが、シンボルの現れた順番が違います。 +.Sp +.Vb 3 +\& I(I
): warning: common of `I' +\& overriding smaller common +\& I(I
): warning: smaller common is here +.Ve +.RE +.RS 4 +.RE +.IP "\fB\-\-warn\-constructors\fR" 4 +.IX Item "--warn-constructors" +グローバルコンストラクタが 1 つでも使われていた場合、警告を出します。 +これが役に立つファイル形式はわずかです。 +\&\s-1COFF\s0 や \s-1ELF\s0 のような形式では、 +リンカはグローバルコンストラクタが使用されていることを検知できません。 +.IP "\fB\-\-warn\-multiple\-gp\fR" 4 +.IX Item "--warn-multiple-gp" +複数のグローバルポインタ値が出力ファイル中で必要とされる場合、 +警告を出します。 +このオプションは、Alpha などの特定のプロセッサでのみ意味があります。 +具体的に言うと、プロセッサの中には特別なセクション中に +大きな値の定数を置くものがあります。 +ある特殊なレジスタ (グローバルポインタ) がこのセクションの中央を +指しており、ベースレジスタ相対のアドレッシングモードを使用して、 +定数を効率的に読み込むことができます。 +ベースレジスタ相対モードのオフセットが、固定で比較的小さい +(例えば 16bit) ため、これによって定数領域の最大サイズが +制限されてしまいます。 +従って、大きなプログラムでは、すべての定数を参照するために +複数のグローバルポインタ値を使うことがしばしば必要となります。 +このオプションを指定すると、このようなケースが起きた時に警告を出します。 +.IP "\fB\-\-warn\-once\fR" 4 +.IX Item "--warn-once" +それぞれの未定義シンボルに対して、それを参照しているモジュール毎に +警告を出すのではなく、ただ 1 度だけ警告を出します。 +.IP "\fB\-\-warn\-section\-align\fR" 4 +.IX Item "--warn-section-align" +アラインメントによって出力セクションのアドレスが変更された場合、 +警告を出します。 +一般的には、アラインメントはインプットセクションにより設定されます。 +アドレスが変更されるのは、それが明示的に指定されなかった場合だけです。 +すなわち、\f(CW\*(C`SECTIONS\*(C'\fR コマンドが、そのセクションの +開始アドレスを指定しなかった場合です。 +.IP "\fB\-\-whole\-archive\fR" 4 +.IX Item "--whole-archive" +コマンドライン上で \fB\-\-whole\-archive\fR オプションの後に +指定された各アーカイブに対して、そのアーカイブファイルの中の必要な +オブジェクトファイルだけを検索するのではなく、アーカイブ中の +すべてのオブジェクトをリンクに含めます。 +これはアーカイブを共有ライブラリに変換する時に普通使用され、 +生成する共有ライブラリ中にすべてのオブジェクトを強制的に取り込みます。 +このオプションは、2 回以上使用しても構いません。 +.Sp +このオプションを gcc から使用する際に、2 つ注意することがあります。 +1 つめは、gcc はこのオプションを知りません。 +ですから、\fB\-Wl,\-whole\-archive\fR と指定しなければなりません。 +2 つめは、アーカイブをリストした後 \fB\-Wl,\-no\-whole\-archive\fR を +使うことを忘れないようにしてください。 +というのは、gcc は自分でアーカイブのリストをリンクに追加することが +あるので、これによる影響を受けないようにする必要があるからです。 +.IP "\fB\-\-wrap\fR \fIsymbol\fR" 4 +.IX Item "--wrap symbol" +\&\fIsymbol\fR に対して、ラッパ関数を使用します。 +すべての \fIsymbol\fR への未定義参照は、 +\&\f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR へと解決されます。 +すべての \f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR への +未定義参照は、\fIsymbol\fR へと解決されます。 +.Sp +これによって、システム関数に対するラッパを用意できます。 +ラッパ関数は、\f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR という +名前にする必要があります。 +ラッパ関数がシステム関数を呼びたい時には、 +\&\f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR を呼び出すようにします。 +.Sp +以下に簡単な例を示します: +.Sp +.Vb 6 +\& void * +\& __wrap_malloc (int c) +\& { +\& printf ("malloc called with %ld\en", c); +\& return __real_malloc (c); +\& } +.Ve +\&\fB\-\-wrap malloc\fR を使用して、このファイルと一緒に他のコードを +リンクした場合、すべての \f(CW\*(C`malloc\*(C'\fR 呼び出しは、 +関数 \f(CW\*(C`_\|_wrap_malloc\*(C'\fR を代わりに呼び出します。 +\&\f(CW\*(C`_\|_wrap_malloc\*(C'\fR 中の \f(CW\*(C`_\|_real_malloc\*(C'\fR が、 +本当の \f(CW\*(C`malloc\*(C'\fR 関数を呼び出します。 +.Sp +同様にして \f(CW\*(C`_\|_real_malloc\*(C'\fR 関数も用意しておくと、 +\&\fB\-\-wrap\fR オプションが指定されなかった場合にもリンクは成功します。 +その場合には、\f(CW\*(C`_\|_real_malloc\*(C'\fR の定義を +\&\f(CW\*(C`_\|_wrap_malloc\*(C'\fR と同じファイルにおいてはいけません。 +このようにすると、リンカがそれを \f(CW\*(C`malloc\*(C'\fR へと +ラップする前に、アセンブラがこの呼び出しを解決してしまうかもしれません。 +.IP "\fB\-\-enable\-new\-dtags\fR" 4 +.IX Item "--enable-new-dtags" +.PD 0 +.IP "\fB\-\-disable\-new\-dtags\fR" 4 +.IX Item "--disable-new-dtags" +.PD +このリンカは、\s-1ELF\s0 システムの新しい動的タグを生成することができます。 +しかし古い \s-1ELF\s0 システムは、それらを理解できない場合があります。 +\&\fB\-\-enable\-new\-dtags\fR を指定した場合、 +動的タグは必要に応じて作成されます。 +\&\fB\-\-disable\-new\-dtags\fR を指定した場合は、 +新しい動的タグは作成されません。 +デフォルトでは、新しい動的タグは作成されません。 +これらのオプションは、\s-1ELF\s0 システム上でのみ利用可能であることに +注意してください。 .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 のコンフィギュレーション処理で、そのシステムで慣習的に -使われる形式を検索リストの最初に置きます。よってあいまいさは -慣習に合わせる事で解決されます。 - +i386 \s-1PE\s0 リンカは、\fB\-shared\fR オプションをサポートしています。 +これを指定すると、通常の実行形式ではなく +動的リンクライブラリ (\s-1DLL\s0) を出力します。 +このオプションを使用した時には、名前を \f(CW\*(C`*.dll\*(C'\fR と +する必要があります。 +それに加え、リンカは標準の \f(CW\*(C`*.def\*(C'\fR ファイルを完全に +サポートしており、オブジェクトファイルと同様にリンカのコマンドライン上で +指定できます +(実際、シンボルをエクスポートしているアーカイブの前に置いて、通常の +オブジェクトファイルと同様にリンクされることを保証する必要があります)。 .PP - +すべてのターゲットに共通のオプションに加え、i386 \s-1PE\s0 のリンカは、 +i386 \s-1PE\s0 ターゲットに固有のコマンドラインオプションを +追加でサポートしています。 +値を取るオプションは、1 つの空白か等号で値との間を区切ります。 +.IP "\fB\-\-add\-stdcall\-alias\fR" 4 +.IX Item "--add-stdcall-alias" +このオプションが指定された場合、stdcall サフィックス (@\fInn\fR) を持つ +シンボルを、そのままサフィックスを取ってエクスポートします。 +.IP "\fB\-\-base\-file\fR \fIfile\fR" 4 +.IX Item "--base-file file" +\&\fIdlltool\fR を使用して DLL を生成するのに必要なすべての再配置情報の +ベースアドレスをセーブするファイル名を \fIfile\fR とします。 +.IP "\fB\-\-dll\fR" 4 +.IX Item "--dll" +通常の実行形式の代わりに \s-1DLL\s0 を生成します。 +\&\fB\-shared\fR を使用することもできますし、指定した +\&\f(CW\*(C`.def\*(C'\fR ファイル中で \f(CW\*(C`LIBRARY\*(C'\fR を +使用することもできます。 +.IP "\fB\-\-enable\-stdcall\-fixup\fR" 4 +.IX Item "--enable-stdcall-fixup" +.PD 0 +.IP "\fB\-\-disable\-stdcall\-fixup\fR" 4 +.IX Item "--disable-stdcall-fixup" +.PD +解決不能なシンボルを見つけると、リンカは「曖昧リンク」を試みます。 +これは、シンボル名の形式 (cdecl 対 stdcall) だけが異なる別の定義済みの +シンボルを探し、一致したものへとリンクすることでシンボルを解決します。 +例えば、未定義シンボル \f(CW\*(C`_foo\*(C'\fR は、関数 +\&\f(CW\*(C`_foo@12\*(C'\fR へとリンクされ、未定義シンボル +\&\f(CW\*(C`_bar@16\*(C'\fR は、関数 \f(CW\*(C`_bar\*(C'\fR へと +リンクされるかも知れません。 +リンカがこれを行う際に、警告を表示します。 +というのは、通常はリンクに失敗するべきであるからです。 +しかし、サードパーティの DLL から生成されたインポートライブラリを +使用するのに、この機能が時々必要となることがあります。 +\&\fB\-\-enable\-stdcall\-fixup\fR を指定した場合、この機能は +完全に有効化され、警告は出力されません。 +\&\fB\-\-disable\-stdcall\-fixup\fR を指定した場合、この機能は +無効化され、そのような不一致はエラーとみなされます。 +.IP "\fB\-\-export\-all\-symbols\fR" 4 +.IX Item "--export-all-symbols" +このオプションが指定されると、\s-1DLL\s0 を構築するのに使われる +オブジェクト中のすべてのグローバルシンボルが、\s-1DLL\s0 によって +エクスポートされます。 +これは、こうしなければエクスポートされるシンボルが全くない場合、 +デフォルトとなることに注意してください。 +シンボルが \s-1DEF\s0 ファイルによって明示的にエクスポートされる場合や +関数属性によって暗黙にエクスポートされる場合は、このオプションが +指定されない限り、デフォルトでは他には何もエクスポートされません。 +シンボル \f(CW\*(C`DllMain@12\*(C'\fR, \f(CW\*(C`DllEntryPoint@0\*(C'\fR, +\&\f(CW\*(C`DllMainCRTStartup@12\*(C'\fR, \f(CW\*(C`impure_ptr\*(C'\fR は、 +自動的にはエクスポートされません。 +他の DLL からインポートされたシンボルも、再びエクスポートされませんし、 +\&\f(CW\*(C`_head_\*(C'\fR で始まったり \f(CW\*(C`_iname\*(C'\fR で +終るような、DLL の内部レイアウトを指定するシンボルもエクスポートされません。 +さらに、\f(CW\*(C`libgcc\*(C'\fR, \f(CW\*(C`libstd++\*(C'\fR, +\&\f(CW\*(C`libmingw32\*(C'\fR, \f(CW\*(C`crtX.o\*(C'\fR からの +シンボルもエクスポートされません。 +\&\f(CW\*(C`_\|_rtti_\*(C'\fR や \f(CW\*(C`_\|_builtin_\*(C'\fR で +始まる名前のシンボルも、\*(C+ DLL のためにエクスポートされません。 +最後に、エクスポートされない Cygwin の非公開シンボルの +拡張されたリストもあります +(明らかに、これは Cygwin ターゲット用の DLL を構築する時に適用されます)。 +これら Cygwin の除外されるシンボルは以下の通りです。 +\&\f(CW\*(C`_cygwin_dll_entry@12\*(C'\fR, +\&\f(CW\*(C`_cygwin_crt0_common@8\*(C'\fR, +\&\f(CW\*(C`_cygwin_noncygwin_dll_entry@12\*(C'\fR, +\&\f(CW\*(C`_fmode\*(C'\fR, \f(CW\*(C`_impure_ptr\*(C'\fR, +\&\f(CW\*(C`cygwin_attach_dll\*(C'\fR, \f(CW\*(C`cygwin_premain0\*(C'\fR, +\&\f(CW\*(C`cygwin_premain1\*(C'\fR, \f(CW\*(C`cygwin_premain2\*(C'\fR, +\&\f(CW\*(C`cygwin_premain3\*(C'\fR そして \f(CW\*(C`environ\*(C'\fR です。 +.IP "\fB\-\-exclude\-symbols\fR \fIsymbol\fR\fB,\fR\fIsymbol\fR\fB,...\fR" 4 +.IX Item "--exclude-symbols symbol,symbol,..." +自動的にエクスポートすべきではないシンボルのリストを指定します。 +それらのシンボル名は、コンマもしくはコロンで区切られます。 +.IP "\fB\-\-file\-alignment\fR" 4 +.IX Item "--file-alignment" +ファイルのアラインメントを指定します。 +ファイル中のセクションは、常にこの倍数のファイルオフセットから +始まります。 +デフォルトは 512 です。 +.IP "\fB\-\-heap\fR \fIreserve\fR" 4 +.IX Item "--heap reserve" +.PD 0 +.IP "\fB\-\-heap\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 +.IX Item "--heap reserve,commit" +.PD +このプログラムのヒープ領域に使うために予約する (オプションでコミットする) +メモリ量を指定します。 +デフォルトでは 1Mb が予約され、4K がコミットされます。 +.IP "\fB\-\-image\-base\fR \fIvalue\fR" 4 +.IX Item "--image-base value" +プログラムもしくは DLL のベースアドレスとして、\fIvalue\fR を使用します。 +これは、プログラムもしくは DLL がロードされた時に使われる、 +最も低位のメモリ位置となります。 +再配置する必要性を軽減し、DLL の性能を向上させるため、各 DLL は +一意なベースアドレスを持ち、他の DLL と重ならないようにすべきです。 +デフォルトでは、実行形式は 0x400000 で、DLL は 0x10000000 です。 +.IP "\fB\-\-kill\-at\fR" 4 +.IX Item "--kill-at" +このオプションが指定されると、stdcall のサフィックス (@\fInn\fR) は、 +エクスポートされる前にシンボルから取り除かれます。 +.IP "\fB\-\-major\-image\-version\fR \fIvalue\fR" 4 +.IX Item "--major-image-version value" +「イメージバージョン」のメジャーナンバを設定します。 +デフォルトは 1 です。 +.IP "\fB\-\-major\-os\-version\fR \fIvalue\fR" 4 +.IX Item "--major-os-version value" +「OS バージョン」のメジャーナンバを設定します。 +デフォルトは 4 です。 +.IP "\fB\-\-major\-subsystem\-version\fR \fIvalue\fR" 4 +.IX Item "--major-subsystem-version value" +「サブシステムバージョン」のメジャーナンバを設定します。 +デフォルトは 4 です。 +.IP "\fB\-\-minor\-image\-version\fR \fIvalue\fR" 4 +.IX Item "--minor-image-version value" +「イメージバージョン」のマイナナンバを設定します。 +デフォルトは 0 です。 +.IP "\fB\-\-minor\-os\-version\fR \fIvalue\fR" 4 +.IX Item "--minor-os-version value" +「OS バージョン」のマイナナンバを設定します。 +デフォルトは 0 です。 +.IP "\fB\-\-minor\-subsystem\-version\fR \fIvalue\fR" 4 +.IX Item "--minor-subsystem-version value" +「サブシステムバージョン」のマイナナンバを設定します。 +デフォルトは 0 です。 +.IP "\fB\-\-output\-def\fR \fIfile\fR" 4 +.IX Item "--output-def file" +リンカは、生成する \s-1DLL\s0 に対応した \s-1DEF\s0 ファイルを含む +ファイル \fIfile\fR を作成します。 +この \s-1DEF\s0 ファイル (\f(CW\*(C`*.def\*(C'\fR と呼ばれます) は、 +\&\f(CW\*(C`dlltool\*(C'\fR を使ってインポートライブラリの作成に +使用されたり、自動的にもしくは暗黙にエクスポートされるシンボルへの +参照として使用されたりします。 +.IP "\fB\-\-out\-implib\fR \fIfile\fR" 4 +.IX Item "--out-implib file" +リンカは、生成する \s-1DLL\s0 に対応したインポートライブラリを含む +ファイル \fIfile\fR を作成します。 +このインポートライブラリ (\f(CW\*(C`*.dll.a\*(C'\fR +もしくは \f(CW\*(C`*.a\*(C'\fR と呼ばれます) は、 +生成された \s-1DLL\s0 をクライアントにリンクするのに使われます。 +この動作によって、別に行う \f(CW\*(C`dlltool\*(C'\fR の +インポートライブラリ作成ステップを飛ばすことができます。 +.IP "\fB\-\-enable\-auto\-image\-base\fR" 4 +.IX Item "--enable-auto-image-base" +\&\f(CW\*(C`\-\-image\-base\*(C'\fR 引数によって指定されなかった DLL の +イメージベースを自動的に選択します。 +DLL 名から生成されるハッシュ値を使うことにより、各 \s-1DLL\s0 に対して +一意のイメージベースが作成され、プログラムの実行を遅延させる +メモリ内での衝突と再配置を回避することができます。 +.IP "\fB\-\-disable\-auto\-image\-base\fR" 4 +.IX Item "--disable-auto-image-base" +一意なイメージベースを自動的に作成しません。 +ユーザから指定されたイメージベース (\f(CW\*(C`\-\-image\-base\*(C'\fR) が +ない場合、プラットフォームのデフォルトを使用します。 +.IP "\fB\-\-dll\-search\-prefix\fR \fIstring\fR" 4 +.IX Item "--dll-search-prefix string" +インポートライブラリを使わずに DLL を動的にリンクする際に、 +\&\f(CW\*(C`lib.dll\*(C'\fR よりも +\&\f(CW\*(C`.dll\*(C'\fR を先に検索します。 +この動作によって、様々な \*(L"subplatforms\*(R" 用に作られた +native, cygwin, uwin, pw などの DLL を、容易に区別することができます。 +例えば、一般的に Cygwin の DLL は、 +\&\f(CW\*(C`\-\-dll\-search\-prefix=cyg\*(C'\fR を使用します。 +.IP "\fB\-\-enable\-auto\-import\fR" 4 +.IX Item "--enable-auto-import" +DLL からインポートするデータに対して、\f(CW\*(C`_symbol\*(C'\fR を +\&\f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR へと手の込んだリンクをし、 +それらの \s-1DATA\s0 をエクスポートする DLL の構築に際して、 +必要に応じてサンク (thunk) したシンボルを作成します。 +一般的にこれは、単にうまくいきます。 +\&\*(-- しかし、以下のようなメッセージが出ることがあります。 +.Sp +"variable '' can't be auto\-imported. Please read the +documentation for ld's \f(CW\*(C`\-\-enable\-auto\-import\*(C'\fR for details." +.Sp +このメッセージは、最終的に 2 つの定数の和によって指定されるアドレスに +アクセスする(サブ)式がある場合に発生します +(Win32 インポートテーブルは、1 つのみしか許していません)。 +これが起こり得る場合というのは、\s-1DLL\s0 からインポートされた構造体変数の +フィールドメンバへアクセスする場合や、 \s-1DLL\s0 からインポートされた +配列変数に対して定数のインデックスを使用する場合などがあります。 +すべての複数ワードの変数 (配列、構造体、long long など) は、 +このエラー条件を引き起こすことがあります。 +しかし、このエクスポートされた目障りな変数が、実際どんなデータタイプで +あっても、ld は 常にこれを検知し、警告を発し、停止します。 +.Sp +エクスポートされた変数のデータタイプが何であろうと、 +この問題を解消する方法がいくつかあります。 +.Sp +最初の解決策は、定数の 1 つを強制的に変数としてしまうことです。 +\&\*(-- つまり、コンパイル時に不明で最適化不可とすることです。 +配列に対しては、2 つの方法が考えられます。 +a) インデックスされる側 (配列のアドレス) を変数とします。 +もしくは、b) 定数インデックスを変数とします。 +従って以下のようになります: +.Sp +.Vb 3 +\& extern type extern_array[]; +\& extern_array[1] --> +\& { volatile type *t=extern_array; t[1] } +.Ve +もしくは +.Sp +.Vb 3 +\& extern type extern_array[]; +\& extern_array[1] --> +\& { volatile int t=1; extern_array[t] } +.Ve +構造体 (や、他のほとんどの複数ワードデータタイプ) に対しては、 +構造体そのもの (もしくは long long など) を変数とするのが、 +唯一の方法です。 +.Sp +.Vb 3 +\& extern struct s extern_struct; +\& extern_struct.field --> +\& { volatile struct s *t=&extern_struct; t->field } +.Ve +もしくは +.Sp +.Vb 3 +\& extern long long extern_ll; +\& extern_ll --> +\& { volatile long long * local_ll=&extern_ll; *local_ll } +.Ve +この問題を扱う 2 番目の方法は、目障りなシンボルを「自動インポート」するのを +止めて、\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR と印を付けることです。 +しかし実際にこれをするには、コンパイル時に #define を使い、 +\&\s-1DLL\s0 を構築しようとしているのか、もしくは \s-1DLL\s0 とリンクする +クライアントコードを構築しようとしているのか、または単に静的ライブラリを +構築/リンクしようとしているのかを示さなければなりません。 +「定数オフセットを用いた直接アドレス」問題を解決するいくつかの方法を +選択する際に、一般的な現実世界での使用方法を考えなければなりません: +.Sp +元のコード: +.Sp +.Vb 7 +\& --foo.h +\& extern int arr[]; +\& --foo.c +\& #include "foo.h" +\& void main(int argc, char **argv){ +\& printf("%d\en",arr[1]); +\& } +.Ve +解決策 1: +.Sp +.Vb 9 +\& --foo.h +\& extern int arr[]; +\& --foo.c +\& #include "foo.h" +\& void main(int argc, char **argv){ +\& /* This workaround is for win32 and cygwin; do not "optimize" */ +\& volatile int *parr = arr; +\& printf("%d\en",parr[1]); +\& } +.Ve +解決策 2: +.Sp +.Vb 14 +\& --foo.h +\& /* Note: auto-export is assumed (no __declspec(dllexport)) */ +\& #if (defined(_WIN32) || defined(__CYGWIN__)) && \e +\& !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC)) +\& #define FOO_IMPORT __declspec(dllimport) +\& #else +\& #define FOO_IMPORT +\& #endif +\& extern FOO_IMPORT int arr[]; +\& --foo.c +\& #include "foo.h" +\& void main(int argc, char **argv){ +\& printf("%d\en",arr[1]); +\& } +.Ve +この問題を回避する 3 番目の方法は、目障りな変数に対するアクセスを、 +データを直接使うインタフェースではなく、関数のインタフェースを使うよう +ライブラリを書き換えることです +(例えば \fIset_foo()\fR と \fIget_foo()\fR アクセス関数を使います)。 +.IP "\fB\-\-disable\-auto\-import\fR" 4 +.IX Item "--disable-auto-import" +DLL からインポートしたデータに対して、\f(CW\*(C`_symbol\*(C'\fR を +\&\f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR へと、手の込んだリンクを +しないようにします。 +.IP "\fB\-\-enable\-extra\-pe\-debug\fR" 4 +.IX Item "--enable-extra-pe-debug" +自動インポートしたシンボルのサンクに関して、付加的なデバッグ情報を示します。 +.IP "\fB\-\-section\-alignment\fR" 4 +.IX Item "--section-alignment" +セクションのアラインメントを設定します。 +メモリ中のセクションは、常にこの倍数のアドレスから始まります。 +デフォルトは 0x1000 です。 +.IP "\fB\-\-stack\fR \fIreserve\fR" 4 +.IX Item "--stack reserve" +.PD 0 +.IP "\fB\-\-stack\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 +.IX Item "--stack reserve,commit" +.PD +プログラムのスタックに使うために予約する (オプションでコミットする) +メモリ量を指定します。 +デフォルトでは 2Mb が予約され、4K がコミットされます。 +.IP "\fB\-\-subsystem\fR \fIwhich\fR" 4 +.IX Item "--subsystem which" +.PD 0 +.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR" 4 +.IX Item "--subsystem which:major" +.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR\fB.\fR\fIminor\fR" 4 +.IX Item "--subsystem which:major.minor" +.PD +プログラムが実行されるサブシステムを指定します。 +\&\fIwhich\fR の値で有効なのは、\f(CW\*(C`native\*(C'\fR, +\&\f(CW\*(C`windows\*(C'\fR, \f(CW\*(C`console\*(C'\fR そして +\&\f(CW\*(C`posix\*(C'\fR です。 +オプションで、サブシステムのバージョンも指定することもできます。 +.SH "環境変数" +.IX Header "環境変数" +環境変数 \f(CW\*(C`GNUTARGET\*(C'\fR, \f(CW\*(C`LDEMULATION\*(C'\fR +そして \f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR を用いて、\fBld\fR の +動作を変更することができます。 +.PP +\&\f(CW\*(C`GNUTARGET\*(C'\fR は、\fB\-b\fR +(もしくはその別名の \fB\-\-format\fR) が指定されなかった場合、 +入力ファイルのオブジェクト形式を決定するのに使用されます。 +その値は、入力形式に対する \s-1BFD\s0 名の 1 つでなくてはなりません。 +環境変数 \f(CW\*(C`GNUTARGET\*(C'\fR が定義されていない場合、 +\&\fBld\fR は、そのターゲットに最も自然な形式を使用します。 +\&\f(CW\*(C`GNUTARGET\*(C'\fR が \f(CW\*(C`default\*(C'\fR に +設定されていた場合、\s-1BFD\s0 は、バイナリ入力ファイルを検査して +インプット形式を決定しようとします。 +この方法は大抵の場合成功しますが、潜在的な曖昧さが残ります。 +というのは、オブジェクトファイルの形式を指定するのに使われる +マジックナンバが一意であることを保証する方法がないからです。 +しかし、それぞれのシステム上での \s-1BFD\s0 の構成過程において、 +そのシステムの慣習的なフォーマットが検索リストの先頭に置かれるので、 +この曖昧さは慣習的なものに有利になるように解決されます。 +.PP +\&\f(CW\*(C`LDEMULATION\*(C'\fR は、\fB\-m\fR オプションが +指定されなかった場合、デフォルトのエミュレーションを決定するのに +使用されます。 +エミュレーションは、リンカの動作の様々な面、特にデフォルトの +リンカスクリプトに影響を与えます。 +利用可能なエミュレーションの一覧は、\fB\-\-verbose\fR もしくは +\&\fB\-V\fR オプションを指定することで表示できます。 +\&\fB\-m\fR オプションが使用されず、\f(CW\*(C`LDEMULATION\*(C'\fR 環境変数も +定義されていなかった場合、デフォルトのエミュレーションは、リンカが +どのように構成されたかに依存します。 +.PP +通常、リンカはデフォルトでシンボルをデマングルします。 +しかし、\f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR 環境変数が設定された場合は、 +デフォルトでシンボルをデマングルしません。 +この環境変数は、gcc のリンカラッパプログラムでも同様に使用されています。 +デフォルトは、\fB\-\-demangle\fR と \fB\-\-no\-demangle\fR オプションで +上書きすることができます。 .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 +.IX Header "関連項目" +\&\fIar\fR\|(1), \fInm\fR\|(1), \fIobjcopy\fR\|(1), \fIobjdump\fR\|(1), +\&\fIreadelf\fR\|(1) そして Info の \fIbinutils\fR と \fIld\fR 項。 +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc. .PP -This document is distributed under the terms of the GNU Free -Documentation License, version 1.1. That license is described in the -sources for this manual page, but it is not displayed here in order to -make this manual more consise. Copies of this license can also be -obtained from: http://www.gnu.org/copyleft/. - -\" .SH GNU Free Documentation License -\" Version 1.1, March 2000 - -\" Copyright (C) 2000 Free Software Foundation, Inc. -\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -\" Everyone is permitted to copy and distribute verbatim -\" copies of this license document, but changing it is -\" not allowed. -\" .PP -\" 0. PREAMBLE -\" .PP -\" The purpose of this License is to make a manual, textbook, or other -\" written document "free" in the sense of freedom: to assure everyone -\" the effective freedom to copy and redistribute it, with or without -\" modifying it, either commercially or noncommercially. Secondarily, -\" this License preserves for the author and publisher a way to get -\" credit for their work, while not being considered responsible for -\" modifications made by others. -\" .PP -\" This License is a kind of "copyleft", which means that derivative -\" works of the document must themselves be free in the same sense. It -\" complements the GNU General Public License, which is a copyleft -\" license designed for free software. -\" .PP -\" We have designed this License in order to use it for manuals for free -\" software, because free software needs free documentation: a free -\" program should come with manuals providing the same freedoms that the -\" software does. But this License is not limited to software manuals; -\" it can be used for any textual work, regardless of subject matter or -\" whether it is published as a printed book. We recommend this License -\" principally for works whose purpose is instruction or reference. -\" .PP -\" 1. APPLICABILITY AND DEFINITIONS -\" .PP -\" This License applies to any manual or other work that contains a -\" notice placed by the copyright holder saying it can be distributed -\" under the terms of this License. The "Document", below, refers to any -\" such manual or work. Any member of the public is a licensee, and is -\" addressed as "you". -\" .PP -\" A "Modified Version" of the Document means any work containing the -\" Document or a portion of it, either copied verbatim, or with -\" modifications and/or translated into another language. -\" .PP -\" A "Secondary Section" is a named appendix or a front-matter section of -\" the Document that deals exclusively with the relationship of the -\" publishers or authors of the Document to the Document's overall subject -\" (or to related matters) and contains nothing that could fall directly -\" within that overall subject. (For example, if the Document is in part a -\" textbook of mathematics, a Secondary Section may not explain any -\" mathematics.) The relationship could be a matter of historical -\" connection with the subject or with related matters, or of legal, -\" commercial, philosophical, ethical or political position regarding -\" them. -\" .PP -\" The "Invariant Sections" are certain Secondary Sections whose titles -\" are designated, as being those of Invariant Sections, in the notice -\" that says that the Document is released under this License. -\" .PP -\" The "Cover Texts" are certain short passages of text that are listed, -\" as Front-Cover Texts or Back-Cover Texts, in the notice that says that -\" the Document is released under this License. -\" .PP -\" A "Transparent" copy of the Document means a machine-readable copy, -\" represented in a format whose specification is available to the -\" general public, whose contents can be viewed and edited directly and -\" straightforwardly with generic text editors or (for images composed of -\" pixels) generic paint programs or (for drawings) some widely available -\" drawing editor, and that is suitable for input to text formatters or -\" for automatic translation to a variety of formats suitable for input -\" to text formatters. A copy made in an otherwise Transparent file -\" format whose markup has been designed to thwart or discourage -\" subsequent modification by readers is not Transparent. A copy that is -\" not "Transparent" is called "Opaque". -\" .PP -\" Examples of suitable formats for Transparent copies include plain -\" ASCII without markup, Texinfo input format, LaTeX input format, SGML -\" or XML using a publicly available DTD, and standard-conforming simple -\" HTML designed for human modification. Opaque formats include -\" PostScript, PDF, proprietary formats that can be read and edited only -\" by proprietary word processors, SGML or XML for which the DTD and/or -\" processing tools are not generally available, and the -\" machine-generated HTML produced by some word processors for output -\" purposes only. -\" .PP -\" The "Title Page" means, for a printed book, the title page itself, -\" plus such following pages as are needed to hold, legibly, the material -\" this License requires to appear in the title page. For works in -\" formats which do not have any title page as such, "Title Page" means -\" the text near the most prominent appearance of the work's title, -\" preceding the beginning of the body of the text. -\" .PP -\" 2. VERBATIM COPYING -\" .PP -\" You may copy and distribute the Document in any medium, either -\" commercially or noncommercially, provided that this License, the -\" copyright notices, and the license notice saying this License applies -\" to the Document are reproduced in all copies, and that you add no other -\" conditions whatsoever to those of this License. You may not use -\" technical measures to obstruct or control the reading or further -\" copying of the copies you make or distribute. However, you may accept -\" compensation in exchange for copies. If you distribute a large enough -\" number of copies you must also follow the conditions in section 3. -\" .PP -\" You may also lend copies, under the same conditions stated above, and -\" you may publicly display copies. -\" .PP -\" 3. COPYING IN QUANTITY -\" .PP -\" If you publish printed copies of the Document numbering more than 100, -\" and the Document's license notice requires Cover Texts, you must enclose -\" the copies in covers that carry, clearly and legibly, all these Cover -\" Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -\" the back cover. Both covers must also clearly and legibly identify -\" you as the publisher of these copies. The front cover must present -\" the full title with all words of the title equally prominent and -\" visible. You may add other material on the covers in addition. -\" Copying with changes limited to the covers, as long as they preserve -\" the title of the Document and satisfy these conditions, can be treated -\" as verbatim copying in other respects. -\" .PP -\" If the required texts for either cover are too voluminous to fit -\" legibly, you should put the first ones listed (as many as fit -\" reasonably) on the actual cover, and continue the rest onto adjacent -\" pages. -\" .PP -\" If you publish or distribute Opaque copies of the Document numbering -\" more than 100, you must either include a machine-readable Transparent -\" copy along with each Opaque copy, or state in or with each Opaque copy -\" a publicly-accessible computer-network location containing a complete -\" Transparent copy of the Document, free of added material, which the -\" general network-using public has access to download anonymously at no -\" charge using public-standard network protocols. If you use the latter -\" option, you must take reasonably prudent steps, when you begin -\" distribution of Opaque copies in quantity, to ensure that this -\" Transparent copy will remain thus accessible at the stated location -\" until at least one year after the last time you distribute an Opaque -\" copy (directly or through your agents or retailers) of that edition to -\" the public. -\" .PP -\" It is requested, but not required, that you contact the authors of the -\" Document well before redistributing any large number of copies, to give -\" them a chance to provide you with an updated version of the Document. -\" .PP -\" 4. MODIFICATIONS -\" .PP -\" You may copy and distribute a Modified Version of the Document under -\" the conditions of sections 2 and 3 above, provided that you release -\" the Modified Version under precisely this License, with the Modified -\" Version filling the role of the Document, thus licensing distribution -\" and modification of the Modified Version to whoever possesses a copy -\" of it. In addition, you must do these things in the Modified Version: -\" .PP -\" A. Use in the Title Page (and on the covers, if any) a title distinct -\" from that of the Document, and from those of previous versions -\" (which should, if there were any, be listed in the History section -\" of the Document). You may use the same title as a previous version -\" if the original publisher of that version gives permission. -\" .PP -\" B. List on the Title Page, as authors, one or more persons or entities -\" responsible for authorship of the modifications in the Modified -\" Version, together with at least five of the principal authors of the -\" Document (all of its principal authors, if it has less than five). -\" .PP -\" C. State on the Title page the name of the publisher of the -\" Modified Version, as the publisher. -\" .PP -\" D. Preserve all the copyright notices of the Document. -\" .PP -\" E. Add an appropriate copyright notice for your modifications -\" adjacent to the other copyright notices. -\" .PP -\" F. Include, immediately after the copyright notices, a license notice -\" giving the public permission to use the Modified Version under the -\" terms of this License, in the form shown in the Addendum below. -\" Preserve in that license notice the full lists of Invariant Sections -\" and required Cover Texts given in the Document's license notice. -\" .PP -\" H. Include an unaltered copy of this License. -\" .PP -\" I. Preserve the section entitled "History", and its title, and add to -\" it an item stating at least the title, year, new authors, and -\" publisher of the Modified Version as given on the Title Page. If -\" there is no section entitled "History" in the Document, create one -\" stating the title, year, authors, and publisher of the Document as -\" given on its Title Page, then add an item describing the Modified -\" Version as stated in the previous sentence. -\" .PP -\" J. Preserve the network location, if any, given in the Document for -\" public access to a Transparent copy of the Document, and likewise -\" the network locations given in the Document for previous versions -\" it was based on. These may be placed in the "History" section. -\" You may omit a network location for a work that was published at -\" least four years before the Document itself, or if the original -\" publisher of the version it refers to gives permission. -\" .PP -\" K. In any section entitled "Acknowledgements" or "Dedications", -\" preserve the section's title, and preserve in the section all the -\" substance and tone of each of the contributor acknowledgements -\" and/or dedications given therein. -\" .PP -\" L. Preserve all the Invariant Sections of the Document, -\" unaltered in their text and in their titles. Section numbers -\" or the equivalent are not considered part of the section titles. -\" .PP -\" M. Delete any section entitled "Endorsements". Such a section -\" may not be included in the Modified Version. -\" .PP -\" N. Do not retitle any existing section as "Endorsements" -\" or to conflict in title with any Invariant Section. -\" .PP -\" If the Modified Version includes new front-matter sections or -\" appendices that qualify as Secondary Sections and contain no material -\" copied from the Document, you may at your option designate some or all -\" of these sections as invariant. To do this, add their titles to the -\" list of Invariant Sections in the Modified Version's license notice. -\" These titles must be distinct from any other section titles. -\" .PP -\" You may add a section entitled "Endorsements", provided it contains -\" nothing but endorsements of your Modified Version by various -\" parties--for example, statements of peer review or that the text has -\" been approved by an organization as the authoritative definition of a -\" standard. -\" .PP -\" You may add a passage of up to five words as a Front-Cover Text, and a -\" passage of up to 25 words as a Back-Cover Text, to the end of the list -\" of Cover Texts in the Modified Version. Only one passage of -\" Front-Cover Text and one of Back-Cover Text may be added by (or -\" through arrangements made by) any one entity. If the Document already -\" includes a cover text for the same cover, previously added by you or -\" by arrangement made by the same entity you are acting on behalf of, -\" you may not add another; but you may replace the old one, on explicit -\" permission from the previous publisher that added the old one. -\" .PP -\" The author(s) and publisher(s) of the Document do not by this License -\" give permission to use their names for publicity for or to assert or -\" imply endorsement of any Modified Version. -\" .PP - -\" 5. COMBINING DOCUMENTS -\" .PP -\" You may combine the Document with other documents released under this -\" License, under the terms defined in section 4 above for modified -\" versions, provided that you include in the combination all of the -\" Invariant Sections of all of the original documents, unmodified, and -\" list them all as Invariant Sections of your combined work in its -\" license notice. -\" .PP -\" The combined work need only contain one copy of this License, and -\" multiple identical Invariant Sections may be replaced with a single -\" copy. If there are multiple Invariant Sections with the same name but -\" different contents, make the title of each such section unique by -\" adding at the end of it, in parentheses, the name of the original -\" author or publisher of that section if known, or else a unique number. -\" Make the same adjustment to the section titles in the list of -\" Invariant Sections in the license notice of the combined work. -\" .PP -\" In the combination, you must combine any sections entitled "History" -\" in the various original documents, forming one section entitled -\" "History"; likewise combine any sections entitled "Acknowledgements", -\" and any sections entitled "Dedications". You must delete all sections -\" entitled "Endorsements." -\" .PP - -\" 6. COLLECTIONS OF DOCUMENTS -\" .PP -\" You may make a collection consisting of the Document and other documents -\" released under this License, and replace the individual copies of this -\" License in the various documents with a single copy that is included in -\" the collection, provided that you follow the rules of this License for -\" verbatim copying of each of the documents in all other respects. -\" .PP -\" You may extract a single document from such a collection, and distribute -\" it individually under this License, provided you insert a copy of this -\" License into the extracted document, and follow this License in all -\" other respects regarding verbatim copying of that document. -\" .PP - -\" 7. AGGREGATION WITH INDEPENDENT WORKS -\" .PP -\" A compilation of the Document or its derivatives with other separate -\" and independent documents or works, in or on a volume of a storage or -\" distribution medium, does not as a whole count as a Modified Version -\" of the Document, provided no compilation copyright is claimed for the -\" compilation. Such a compilation is called an "aggregate", and this -\" License does not apply to the other self-contained works thus compiled -\" with the Document, on account of their being thus compiled, if they -\" are not themselves derivative works of the Document. -\" .PP -\" If the Cover Text requirement of section 3 is applicable to these -\" copies of the Document, then if the Document is less than one quarter -\" of the entire aggregate, the Document's Cover Texts may be placed on -\" covers that surround only the Document within the aggregate. -\" Otherwise they must appear on covers around the whole aggregate. -\" .PP - -\" 8. TRANSLATION -\" .PP -\" Translation is considered a kind of modification, so you may -\" distribute translations of the Document under the terms of section 4. -\" Replacing Invariant Sections with translations requires special -\" permission from their copyright holders, but you may include -\" translations of some or all Invariant Sections in addition to the -\" original versions of these Invariant Sections. You may include a -\" translation of this License provided that you also include the -\" original English version of this License. In case of a disagreement -\" between the translation and the original English version of this -\" License, the original English version will prevail. -\" .PP - -\" 9. TERMINATION -\" .PP -\" You may not copy, modify, sublicense, or distribute the Document except -\" as expressly provided for under this License. Any other attempt to -\" copy, modify, sublicense or distribute the Document is void, and will -\" automatically terminate your rights under this License. However, -\" parties who have received copies, or rights, from you under this -\" License will not have their licenses terminated so long as such -\" parties remain in full compliance. -\" .PP - -\" 10. FUTURE REVISIONS OF THIS LICENSE -\" .PP -\" The Free Software Foundation may publish new, revised versions -\" of the GNU Free Documentation License from time to time. Such new -\" versions will be similar in spirit to the present version, but may -\" differ in detail to address new problems or concerns. See -\" http://www.gnu.org/copyleft/. -\" .PP -\" Each version of the License is given a distinguishing version number. -\" If the Document specifies that a particular numbered version of this -\" License "or any later version" applies to it, you have the option of -\" following the terms and conditions either of that specified version or -\" of any later version that has been published (not as a draft) by the -\" Free Software Foundation. If the Document does not specify a version -\" number of this License, you may choose any version ever published (not -\" as a draft) by the Free Software Foundation. -\" .PP - -\" ADDENDUM: How to use this License for your documents -\" .PP -\" To use this License in a document you have written, include a copy of -\" the License in the document and put the following copyright and -\" license notices just after the title page: -\" .PP -\" Copyright (c) YEAR YOUR NAME. -\" Permission is granted to copy, distribute and/or -\" modify this document under the terms of the GNU -\" Free Documentation License, Version 1.1 or any later -\" version published by the Free Software Foundation; -\" with the Invariant Sections being LIST THEIR TITLES, -\" with the Front-Cover Texts being LIST, and with the -\" Back-Cover Texts being LIST. A copy of the license -\" is included in the section entitled "GNU Free -\" Documentation License". -\" .PP -\" If you have no Invariant Sections, write "with no Invariant Sections" -\" instead of saying which ones are invariant. If you have no -\" Front-Cover Texts, write "no Front-Cover Texts" instead of -\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts. -\" .PP -\" If your document contains nontrivial examples of program code, we -\" recommend releasing these examples in parallel under your choice of -\" free software license, such as the GNU General Public License, -\" to permit their use in free software. - -.SH 日本語訳 -野首 寛高(hnokubi@yyy.or.jp): FreeBSD 用に翻訳 - -.\" .SH 履歴 -.\" 野首 寛高 1998/10/25 FreeBSD 用に翻訳 -.\" 堀川和雄 2001/08/04 binutil 2.11.2 用に修正 +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". +.SH "謝辞" +.IX Header "謝辞" +この日本語訳の作成にあたり、SRA の矢吹氏 (yabuki@sra.co.jp) の訳を +参考にさせていただきました。