doc/ja_JP.eucJP/man/man1/rtld.1
Kazuo Horikawa f2a3773a23 Catch up with 5.0-CURRENT-20030222-JPSNAP.
Changes for man[25] will be delivered later.
2003-03-10 00:02:03 +00:00

163 lines
5.3 KiB
Groff

.\" %FreeBSD: src/libexec/rtld-elf/rtld.1,v 1.31 2003/02/13 23:07:28 phantom Exp %
.\"
.\" Copyright (c) 1995 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 acknowledgment:
.\" 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.
.\"
.\" $FreeBSD$
.Dd January 28, 2000
.Dt RTLD 1
.Os
.Sh 名称
.Nm ld.so ,
.Nm rtld
.Nd 実行時リンクエディタ
.Sh 解説
.Nm
ユーティリティは自己完結した共有オブジェクトで、
実行時にプロセスのアドレス空間に共有オブジェクトを読み込んで
編集する機能を提供します。
一般には動的リンカという名前でも知られています。
動的リンクされたプログラムに含まれるデータ構造を使って
どの共有ライブラリが必要なのかを決定し、
.Xr mmap 2
システムコールを使ってそれらを読み込みます。
.Pp
全ての共有ライブラリを読み込むことに成功すると、次に
.Nm
はメインプログラムおよび読み込んだ
全てのオブジェクトからの外部参照を解決します。
プログラム本体の実行が始まる前になんらかの設定をする機会を
共有オブジェクトに与えるために、
オブジェクトごとに初期化ルーチンを呼ぶ機構があります。
これは静的コンストラクタを含むような C++ ライブラリにとって有用です。
.Pp
実行されるプログラムが動的にリンクされている場合には、そのプログラムと一緒に
.Nm
ユーティリティ自体がカーネルによって読み込まれます。
そしてカーネルは動的リンカに制御を移します。
動的リンカがプログラムとそれに必要な共有オブジェクトの
読み込み、再配置、初期化を終えると、
プログラムのエントリポイントに制御を移します。
.Pp
ファイルシステム中にある必要な共有オブジェクトを探索するために、
.Nm
.Xr ldconfig 8
ユーティリティによって用意される
.Dq hints
ファイルを使います。
.Pp
.Nm
ユーティリティは以下に挙げるような、
自身の動作を変えるために使用されるいくつかの環境変数を認識します:
.Pp
.Bl -tag -width ".Ev LD_LIBRARY_PATH"
.It Ev LD_LIBRARY_PATH
コロンで区切られたディレクトリのリストで、
共有ライブラリのデフォルトサーチパスを上書きします。
この環境変数は、
set-user-ID 及び set-group-ID されたプログラムにおいては無視されます。
.It Ev LD_PRELOAD
他の共有ライブラリより前にリンクされるべき共有ライブラリのリストで、
コロンか空白で区切られています。
もしディレクトリが指定されていないならば、
最初に
.Ev LD_LIBRARY_PATH
で指定されるディレクトリから、
続いて組み込みの標準ディレクトリ群から検索されます。
この環境変数は、
set-user-ID 及び set-group-ID されたプログラムにおいては無視されます。
.It Ev LD_BIND_NOW
空ではない文字列が設定されている場合には、
.Nm
は、全ての外部関数呼び出しをプログラムの実行を始める前に再配置します。
通常、関数呼び出しの結合は遅延方式 (lazy binding) で行われます。
すなわち、関数呼び出しはそれぞれの関数が最初に呼ばれる時に結合されます。
.Ev LD_BIND_NOW
はプログラムの起動時間を増加させますが、
実行時に思いもかけず関数が定義されていなかったという事件は避けられます。
.It Ev LD_TRACE_LOADED_OBJECTS
空ではない文字列が設定されている場合には、
.Nm
は共有オブジェクトを読み込んで、全てのオブジェクトの絶対パス名を含む
概要を標準出力に表示した後に終了します。
.It Ev LD_TRACE_LOADED_OBJECTS_ALL
空ではない文字列に設定されている場合には、
どのオブジェクトがどのオブジェクトのロードの原因となったのかという
まとめを
.Nm
が展開するようにさせます。
.It Ev LD_TRACE_LOADED_OBJECTS_FMT1
.It Ev LD_TRACE_LOADED_OBJECTS_FMT2
設定されている場合には、
これらの変数は
トレース出力をカスタマイズするための
.Xr printf 3
流フォーマット文字列として解釈されます。
.Xr ldd 1
.Fl f
オプションがこれらを使用するので、
.Xr ldd 1
をより便利にフィルタとして使うことができます。
以下の変換を使うことができます:
.Bl -tag -width 4n
.It Li %a
メインプログラムの名前
(またの名を
.Dq __progname )
.It Li \&%A
.Ev LD_TRACE_LOADED_OBJECTS_PROGNAME
環境変数の値。
.It Li %o
ライブラリの名前。
.It Li %m
ライブラリのメジャーバージョン番号。
.It Li %p
.Nm rtld
のライブラリ検索ルールで決定されるフルパス名。
.It Li %x
ライブラリのロードアドレス。
.El
.Pp
さらに、
.Ql \en
.Ql \et
が認識され、通常の意味をもちます。
.El
.Sh 関連ファイル
.Bl -tag -width indent
.It Pa /var/run/ld-elf.so.hints
.El
.Sh 関連項目
.Xr ld 1 ,
.Xr ldd 1 ,
.Xr elf 5 ,
.Xr ldconfig 8