doc/ja/man/man1/ld.1
Jun Kuriyama 88a4de0fb8 Catch up to 3.0-19980827-SNAP and some fixes.
Submitted by:	Kazuo Horikawa <k-horik@yk.rim.or.jp>
1998-09-26 06:20:22 +00:00

291 lines
8.9 KiB
Groff

.\"
.\" Copyright (c) 1993 Paul Kranenburg
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by Paul Kranenburg.
.\" 3. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %Id: ld.1,v 1.20 1998/07/26 04:16:04 jkoshy Exp %
.\" jpman %Id: ld.1,v 1.4 1997/11/12 13:02:08 horikawa Stab %
.\"
.Dd October 14, 1993
.Dt LD 1
.Os FreeBSD
.Sh 名称
.Nm ld
.Nd リンクエディタ
.Sh 書式
.Nm ld
.Op Fl fMNnrSstXxz
.Bk -words
.Op Fl A Ar symbol-file
.Op Fl assert Ar keyword
.Op Fl B Ns Ar linkmode
.Op Fl D Ar datasize
.Op Fl d Ar c
.Op Fl d Ar p
.Op Fl e Ar entry
.Op Fl l Ns Ar library-specifier
.Op Fl L Ns Ar library-search-path
.Op Fl nostdlib
.Op Fl O Ar filename
.Op Fl o Ar filename
.Op Fl R Ns Ar record-library-search-path
.Op Fl T Ar address
.Op Fl u Ar symbol
.Op Fl V Ar shlib-version
.Op Fl y Ar symbol
.Ek
.Sh 解説
.Nm
はコマンドラインで指定されたオブジェクトとアーカイブファイルを結合
し、新しいオブジェクトファイルを生成します。生成されるオブジェクトファイルは
実行可能プログラム、実行時ロードに対応した共有オブジェクト、もう一度
.Nm
により処理可能なオブジェクトのいずれかになります。オブジェクト
ファイルとアーカイブはコマンドラインで指定された順に処理します。
.Pp
オプションは以下の通りです。
.Pp
.Bl -tag -width indent
.It Fl A Ar symbol-file
symbol-file を、コマンドラインで指定されたオブジェクトファイルをリンクする
ためのベースとして用います。
.It Fl assert Ar keyword
本オプションは主に SunOS の
.Nm ld
との互換性のために存在します。
Sun の assert が失敗する条件のほとんどは、本
.Nm
ではエラーになるか、警告メッセージが発せられます。
.Nm ld
が実装している唯一のキーワードは
.Nm pure-text
です。これを使用すると、位置独立オブジェクトが生成され、
位置独立でないファイルとリンクされるときに警告が生成されます。
.It Fl B Ns Ar dynamic
ダイナミックライブラリとのリンクを指定します。
ライブラリが -lx オプションによりコマンドラインから指定されると、libx.so.n.m
.Po
.Fl l
オプションの項を参照
.Pc
を検索ルールに基づき有効な範囲で検索します。もしこの形式
のライブラリが発見できなければ、検索ルールに基づき通常の libx.a を検索します。
本オプションはコマンドラインのどこにでも置くことが可能であり、
.Fl B Ns Ar static
と相補的なものです。
.It Fl B Ns Ar forcedynamic
これは
.Fl B Ns Ar dynamic
と似ていますが、ダイナミックライブラリとリンクしようとしなくても、
.Nm ld
はダイナミックな実行可能ファイルを生成します。
スタティックプログラムでありかつ、
実行時にダイナミックオブジェクトをロードする
プログラムに有用です。
.It Fl B Ns Ar static
.Fl B Ns Ar dynamic
の逆の効果を持ちます。本オプション以降に指定されたライブラリに
関しては、もう一度
.Fl B Ns Ar dynamic
が指定されるまで、ダイナミックリンクが行われなくなります。
.Fl B Ns Ar static
が有効な位置においてコマンドラインから明示的に共有オブジェクトが
指定された場合は、エラーとなります。
.It Fl B Ns Ar shareable
通常の実行可能イメージではなく、共有オブジェクトを生成するよう指示します。
.It Fl B Ns Ar symbolic
リンク時に、すべてのシンボル参照が解決されるように指示します。
実行時に必要なリロケーションは
.Em ベース相対
リロケート、すなわちロードアドレスに関する変換のみです。
シンボル参照の解決に失敗した場合はエラーとなります。
.It Fl B Ns Ar forcearchive
アーカイブ中の全メンバをロードします。
メンバが通常のオブジェクトファイルに対して定義を提供するか否かには無関係です。
PIC オブジェクトのアーカイブを展開することなく、共有ライブラリを
作成するのに便利です。
.It Fl B Ns Ar silly
共有オブジェクトのための愚かな
.Em \.sa
アーカイブを作成します。これは、version 3
の共有オブジェクトとの互換性のために存在します。
.It Fl D Ar data-size
データセグメントのサイズを設定します。
正気を保つためには、
サイズを入力ファイルの全データサイズの合計より大きくすべきです。
.It Fl d Ar c
リロケータブルな出力を作成している時でも、
コモンエリアのアロケートを強制します。
.It Fl d Ar p
非 PIC コード中の手続き呼び出しの別名定義を強制します。
手続きリンク表 (Procedure Linkage Table) による呼び出しのリダイレクト
のような、実行時リロケーションを含む共有コードを作成するのに便利です。
.Po
.Xr link 5
を参照
.Pc
.It Fl e Ar entry-symbol
実行可能ファイルのエントリのシンボルを指定します。
.It Fl f
全てのオブジェクトファイルとライブラリの解決されたパスを
標準出力にリストし、終了します。
.It Fl L Ns Ar path
.Fl l
オプションで指定したライブラリの検索パスに
.Ar path
を追加します。
.It Fl l Ns Ar lib-spec
出力に含めるとされるライブラリを指定します。もし、
.Fl B Ns Ar dynamic
オプションが有効ならば、まず lib<spec>.so.m.n
.Po
.Em m
はメジャーバージョン番号、
.Em n
はマイナーバージョン番号
.Pc
形式の共有ライブラリを検索します。検索パス中に見つかった、
最もバージョンが高いライブラリを選択します。共有ライブラリが見つからないか、
.Fl B Ns Ar static
オプションが有効なら、lib<spec>.a 形式のアーカイブを
ライブラリ検索パスより探します。
.It Fl M
入力ファイルのセグメントマッピングと、
出力ファイルの
.Pq 大域
シンボルに割り付けられた値
に関する報告を出力します。
.It Fl N
OMAGIC 形式ファイル
を生成します。
.It Fl n
NMAGIC 形式ファイル
を生成します。
.It Fl nostdlib
.Fl l
で指定されたライブラリの検索時に、組み込みのライブラリ検索パス
.Po
通常は
.Dq /usr/lib
.Pc
を使用しません。
.It Fl O Ar filename
出力ファイル名を指定します。
ファイルは
.Ar filename .tmp
として生成され、出力が完了すると、
.Ar filename
にリネームされます。
.It Fl o Ar filename
出力ファイル名を指定します。デフォルトは
.Dq a.out
です。
.It Fl Q
QMAGIC (FreeBSD/BSDi-i386)形式のファイルを生成します。これがデフォルトです。
.It Fl r
さらに、
.Nm
によって処理可能なリロケータブルオブジェクトを生成します。
.It Fl R
実行時のライブラリ検索のために、与えられたバスを実行可能ファイルに記録します。
ダイナミックリンクされた実行可能ファイルにのみ適用されます。
.It Fl S
出力にデバッガシンボルを含めません。
.It Fl s
出力にすべてのシンボルを含めません。
.It Fl T
テキストセグメントの開始アドレスを指定します。このアドレスを基準に、すべ
ての入力ファイルがリロケートされます。
.It Fl t
入力ファイルの処理状況を出力します。
.It Fl u Ar symbol
シンボル
.Ar symbol
を強制的に未定義とマークします。
他からの参照がない状況で、あるアーカイブのメンバをロードするのに便利です。
.It Fl V Ar version
.Pq 共有ライブラリ生成時に
共有ライブラリにバージョン番号を埋め込みます。SunOS 4.x 等の他
のシステムと互換性のある共有ライブラリを作成するのに便利です。
SunOS 4.x ではバージョン番号は 3、本 ld のデフォルトは 8 です。
.It Fl X
入力ファイル中の文字
.Dq L
から始まるローカルシンボルを削除します。
.It Fl x
入力ファイル中のすべてのローカルシンボルを削除します。
.It Fl y Ar symbol
シンボル
.Ar symbol
に関する処理状況を報告します。
.It Fl Z
386BSD ZMAGIC 形式ファイルを生成します。
.It Fl z
NetBSD ZMAGIC 形式ファイルを生成します。
.Sh 環境変数
.Nm
は以下の環境変数を使用します:
.Bl -tag -width "LD_LIBRARY_PATH"
.It Ev LD_LIBRARY_PATH
これはコロンで区切るディレクトリリストであり、ライブラリ検索パスとして、
.Fl L
オプションで指定されたディレクトリの後であり組み込みパスの前であるところに
挿入されます。
.\" .It Ev LD_NOSTD_PATH
.\" When set, do not search the built-in path for libraries.
.\" This is an alternative to the
.\" .Fl nostdlib
.\" command-line flag.
.El
.Sh 関連ファイル
.Sh 関連項目
.Xr ldd 1 ,
.Xr rtld 1 ,
.Xr link 5 ,
.Xr ldconfig 8
.Sh 警告
通常の実行可能ファイルを生成するなら、エントリポイントを明示する必要が
あります。以前のバージョンの
.Nm ld
では、このようなことは不要でした。
.Sh バグ
共有オブジェクトに対しては、正しく未定義シンボルの検査が行われません。
.Pp
共有オブジェクトをカスケードすると
.Dq -Bstatic
オプションは失敗します。
.Pp
実行時に必要なシンボルを必要とされなくとも、
.Nm
に指定された共有オブジェクトは実行時ロードのためのマークが含まれます。
.Sh 歴史
.Nm
コマンドは
.At v1
から登場しました。
.Nm
による共有ライブラリモデルは SunOS 4.0 より登場しています。