aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/ld.1
diff options
context:
space:
mode:
Diffstat (limited to 'ja_JP.eucJP/man/man1/ld.1')
-rw-r--r--ja_JP.eucJP/man/man1/ld.125
1 files changed, 18 insertions, 7 deletions
diff --git a/ja_JP.eucJP/man/man1/ld.1 b/ja_JP.eucJP/man/man1/ld.1
index 40623ee585..bfeb862524 100644
--- a/ja_JP.eucJP/man/man1/ld.1
+++ b/ja_JP.eucJP/man/man1/ld.1
@@ -1,8 +1,5 @@
-.\" %FreeBSD: src/contrib/binutils/ld/ld.1,v 1.9 2002/10/11 06:14:04 obrien Exp %
.\" $FreeBSD$
-.\"
-.\"
-.\" Automatically generated by Pod::Man v1.3, Pod::Parser v1.13
+.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -25,7 +22,6 @@
..
.de Ve \" End verbatim text
.ft R
-
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
@@ -133,10 +129,10 @@
.\" ========================================================================
.\"
.IX Title "LD 1"
-.TH LD 1 "2002-08-05" "binutils-2.12.91" "GNU Development Tools"
+.TH LD 1 "2002-10-30" "binutils-2.13" "GNU Development Tools"
.UC
.SH "名称"
-ld \- \s-1GNU\s0 リンカ \s-1LD\s0 の使い方
+ld \- GNU リンカ LD の使い方
.SH "書式"
.IX Header "書式"
ld [\fBoptions\fR] \fIobjfile\fR ...
@@ -185,6 +181,7 @@ ld: the \s-1GNU\s0 linker を参照してください。
.Vb 1
\& ld -o <output> /lib/crt0.o hello.o -lc
.Ve
+.PP
これは、\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 に
@@ -257,6 +254,7 @@ ld: the \s-1GNU\s0 linker を参照してください。
.Vb 1
\& gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
.Ve
+.PP
これは重要です。
というのも、このようにしないと、コンパイラドライバプログラムは
何も言わずにリンカオプションを落してしまい、リンクが正しく
@@ -1066,6 +1064,11 @@ no_undefined の実装は、未定義シンボルによって動的リンカが
つまり、最も適切な memset 関数を動的に選択するのです。
どうやら \s-1HPPA\s0 共有ライブラリに未定義シンボルが含まれるのも
普通のことのようです。
+.IP "\fB\-\-no\-undefined\-version\fR" 4
+.IX Item "--no-undefined-version"
+通常は、シンボルが未定義バージョンを持つ場合、リンカはこれを無視します。
+このオプションは、未定義バージョンのシンボルを許さず、
+代りに致命的なエラーを報告します。
.IP "\fB\-\-no\-warn\-mismatch\fR" 4
.IX Item "--no-warn-mismatch"
通常 \fBld\fR は、不適当な入力ファイルをリンクしようとした場合、
@@ -1497,6 +1500,7 @@ Unix のリンカは、このちょっといい加減な慣習を許していますが、
\& return __real_malloc (c);
\& }
.Ve
+.Sp
\&\fB\-\-wrap malloc\fR を使用して、このファイルと一緒に他のコードを
リンクした場合、すべての \f(CW\*(C`malloc\*(C'\fR 呼び出しは、
関数 \f(CW\*(C`_\|_wrap_malloc\*(C'\fR を代わりに呼び出します。
@@ -1746,6 +1750,7 @@ a) インデックスされる側 (配列のアドレス) を変数とします。
\& extern_array[1] -->
\& { volatile type *t=extern_array; t[1] }
.Ve
+.Sp
もしくは
.Sp
.Vb 3
@@ -1753,6 +1758,7 @@ a) インデックスされる側 (配列のアドレス) を変数とします。
\& extern_array[1] -->
\& { volatile int t=1; extern_array[t] }
.Ve
+.Sp
構造体 (や、他のほとんどの複数ワードデータタイプ) に対しては、
構造体そのもの (もしくは long long など) を変数とするのが、
唯一の方法です。
@@ -1762,6 +1768,7 @@ a) インデックスされる側 (配列のアドレス) を変数とします。
\& extern_struct.field -->
\& { volatile struct s *t=&extern_struct; t->field }
.Ve
+.Sp
もしくは
.Sp
.Vb 3
@@ -1769,6 +1776,7 @@ a) インデックスされる側 (配列のアドレス) を変数とします。
\& extern_ll -->
\& { volatile long long * local_ll=&extern_ll; *local_ll }
.Ve
+.Sp
この問題を扱う 2 番目の方法は、目障りなシンボルを「自動インポート」するのを
止めて、\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR と印を付けることです。
しかし実際にこれをするには、コンパイル時に #define を使い、
@@ -1789,6 +1797,7 @@ a) インデックスされる側 (配列のアドレス) を変数とします。
\& printf("%d\en",arr[1]);
\& }
.Ve
+.Sp
解決策 1:
.Sp
.Vb 9
@@ -1802,6 +1811,7 @@ a) インデックスされる側 (配列のアドレス) を変数とします。
\& printf("%d\en",parr[1]);
\& }
.Ve
+.Sp
解決策 2:
.Sp
.Vb 14
@@ -1820,6 +1830,7 @@ a) インデックスされる側 (配列のアドレス) を変数とします。
\& printf("%d\en",arr[1]);
\& }
.Ve
+.Sp
この問題を回避する 3 番目の方法は、目障りな変数に対するアクセスを、
データを直接使うインタフェースではなく、関数のインタフェースを使うよう
ライブラリを書き換えることです