日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
RTLD(1) FreeBSD 一般コマンドマニュアル RTLD(1) 名称 ld-elf.so.1, ld.so, rtld -- 実行時のリンクエディタ 解説 ld-elf.so.1 ユーティリティは、プロセスのアドレス空間に共有オブジェクトを ロードしてリンクエディトするための実行時のサポートを提供する自己完結型の 共有オブジェクトです。また、それは、動的なリンカとして一般的に知られてい ます。それは、どの共有ライブラリが必要かを決定するために動的にリンクされ たプログラム内に含まれるデータ構造体を使用し、mmap(2) システムコールを使 用して、それらをロードします。 すべての共有ライブラリが成功してロードされた後に、ld-elf.so.1 は、メイン プログラムとすべてロードされたオブジェクトの両方の外部参照を解決し続けま す。メカニズムは、適切なプログラムの実行が始まる前に、共有オブジェクトに あらゆる特別のセットアップを実行する機会を与え、基本オブジェクトごとに呼 び出される初期設定ルーチンのために提供されています。これは、静的なコンス トラクタを含む C++ ライブラリのために役に立ちます。 ロードされたオブジェクトのための依存状態を解決するとき、ld-elf.so.1 は、 rpath と soname の動的なトークン文字列を変換します。静的なリンカの -z origin オプションがバイナリをリンクする時に設定されたなら、トークンの展開 は、オブジェクトロード時に実行されます、ld(1) を参照。次の文字列が現在、 認識されます: $ORIGIN ロードされたオブジェクトのフルパスに変換されます。 $OSNAME オペレーティングシステム実装の名前に変換されます。 $OSREL オペレーティングシステムのリリースレベルに変換されます。 $PLATFORM マシンハードウェアプラットフォームに変換されます。 ld-elf.so.1 ユーティリティ自体は、実行されることになっているあらゆる動的 にリンクされたプログラムとともにカーネルによってロードされます。カーネル は、動的なリンカに制御を移します。動的なリンカは、プログラムとその必要と される共有されるオブジェクトをロードし、リロケーションし、初期化すること を終了した後に、プログラムのエントリポイントに制御を移します。次の検索順 序は、必要な共有オブジェクトを見つけるために使用されます: 1. そのオブジェクトも DT_RUNPATH タグを含んでいないなら、参照する オブジェクトの DT_RPATH 2. 参照するオブジェクトが DT_RUNPATH タグを含んでいなければ、プロ グラムの DT_RPATH 3. LD_LIBRARY_PATH 環境変数によって示されるパス 4. 参照するオブジェクトの DT_RUNPATH 5. ldconfig(8) ユーティリティによって生成されたヒントファイル 6. 参照されるオブジェクトが ``-z nodefaultlib'' オプションを使用 して、リンクされなかったなら、/lib と /usr/lib ディレクトリ。 ld-elf.so.1 ユーティリティは、その振る舞いを修正するために使用することが できる多くの環境変数を認識します。64 ビットのアーキテクチャにおいて、32 ビットのオブジェクトのためのリンカは、下記にリストされた環境変数をすべて 認識しますが、LD_32_ が前に付けられます、例えば、次の通りです: LD_32_TRACE_LOADED_OBJECTS。 LD_DUMP_REL_POST 設定されるなら、ld-elf.so.1 は、シンボル結合とリロケー ションの後に、すべてのリロケーションを含んでいるテーブ ルを印刷 (表示) します。 LD_DUMP_REL_PRE 設定されるなら、ld-elf.so.1 は、シンボル結合とリロケー ションの前に、すべてのリロケーションを含んでいるテーブ ルを印刷 (表示) します。 LD_LIBMAP libmap.conf(5) と同じ形式のライブラリ置換リスト。便宜 上、空白と改行の代わりに文字 `=' と `,' を使用すること ができます。この変数は、libmap.conf(5) の後に解析さ れ、そのエントリを上書きします。この変数は、セットユー ザ ID (set-user-ID) とセットグループ ID (set-group-ID) プログラムのために未設定とされます。 LD_LIBMAP_DISABLE 設定されるなら、libmap.conf(5) と LD_LIBMAP の使用を無 効とします。この変数は、セットユーザ ID (set-user-ID) とセットグループ ID (set-group-ID) プログラムに対して 未設定とされます。 LD_ELF_HINTS_PATH この変数は、``hints'' ファイルのデフォルト位置を上書き します。この変数は、セットユーザ ID (set-user-ID) と セットグループ ID (set-group-ID) プログラムのために未 設定とされます。 LD_LIBRARY_PATH 共有ライブラリのためにデフォルトの検索パスを上書きし て、ディレクトリのコロンで区切られたリスト。この変数 は、セットユーザ ID (set-user-ID) とセットグループ ID (set-group-ID) プログラムのために未設定とされます。 LD_LIBRARY_PATH_RPATH 変数が指定され、'y'、'Y' または '1' シンボルのいずれか で始まる値があるなら、LD_LIBRARY_PATH 変数によって指定 されたパスは、DT_RUNPATH タグを含んでいないバイナリの ための DT_RPATH からのパスを無視することができます。そ のようなバイナリに関して、変数 LD_LIBRARY_PATH_RPATH が設定されるとき、``-z nodefaultlib'' のリンク時オプ ションは、同様に無視されます。 LD_PRELOAD あらゆる他の共有ライブラリの前にリンクされるコロンまた は空白類によって区切られる共有ライブラリのリスト。ディ レクトリが指定されないなら、LD_LIBRARY_PATH によって指 定されるディレクトリが、最初に検索され、続いて組み込み の標準ディレクトリの組が検索されます。この変数は、セッ トユーザ ID (set-user-ID) とセットグループ ID (set group-ID) プログラムのために未設定とされます。 LD_LIBRARY_PATH_FDS ライブラリのディレクトリのためのファイル記述子番号のコ ロンで区切られたリスト。これは、ファイルシステムのよう なグローバルな名前空間が利用不可能なとき、capsicum(4) サンドボックス内の使用を目的としています。それは、 LD_LIBRARY_PATH の直後に調べられます。この変数は、セッ トユーザ ID (set-user-ID) とセットグループ ID (set group-ID) プログラムのために未設定とされます。 LD_BIND_NOT 空でない文字列に設定されるとき、バインディングを行うと き、PLT スロットの修正を防止します。結果として、PLT 解 決された関数の各呼び出しが解決されます。デバッグ出力と の組み合わせで、これは、実行時にすべてのバインディング のアクションの完全なアカウントを提供します。この変数 は、セットユーザ ID (set-user-ID) とセットグループ ID (set-group-ID) プログラムに対して未設定とされます。 LD_BIND_NOW 空でない文字列に設定されるとき、ld-elf.so.1 は、プログ ラムの実行を開始する前に、すべての外部関数の呼び出しを リロケーションします。通常、関数呼び出しは、各関数の最 初の呼び出しで、ゆるく結合 (bound lazily) されます。 LD_BIND_NOW は、プログラムの起動時間を増加させますが、 それは、未定義の関数によって引き起こされる実行時の予想 外の問題を回避します。 LD_TRACE_LOADED_OBJECTS 空でない文字列に設定されるとき、ld-elf.so.1 は、共有さ れるオブジェクトをロードし、すべてのオブジェクトの絶対 的なパス名を含んでいる要約を標準出力に印刷 (表示) した 後に、終了します。 LD_TRACE_LOADED_OBJECTS_ALL 空でない文字列に設定されるとき、ld-elf.so.1 は、各オブ ジェクトがロードを引き起こすオブジェクトを示す要約を展 開します。 LD_TRACE_LOADED_OBJECTS_FMT1 LD_TRACE_LOADED_OBJECTS_FMT2 設定されるとき、これらの変数は、トレース出力をカスタマ イズする printf(3) の様式の書式文字列として解釈され、 ldd(1) の -f オプションによって使用され、ldd(1) は、よ り便利なフィルタとして操作できます。依存する名前が文字 列 lib で始まるなら、LD_TRACE_LOADED_OBJECTS_FMT1 が使 用されます、そうでなければ LD_TRACE_LOADED_OBJECTS_FMT2 が使用されます。次の変換 を使用することができます: %a (``__progname'' の別名でも知られる) メインプログ ラムの名前。 %A 環境変数 LD_TRACE_LOADED_OBJECTS_PROGNAME の値。 通常、ldd(1) を使用して検査されるプログラムの名 前と共有ライブラリの両方を印刷 (表示) するために 使用されます。 %o ライブラリ名。 %p rtld のライブラリ検索規則によって決定されるフル パス名。 %x ライブラリのロードアドレス。 さらに、`\n' と `\t' が、認識され、それらの通常の意味 があります。 LD_UTRACE 設定されるなら、ld-elf.so.1 は、utrace(2) を通して共有 オブジェクトのロードとアンロードのようなイベントをログ 登録します。 LD_LOADFLTR 設定されるなら、ld-elf.so.1 は、必要になるまで、それを 延期することの代わりに直ちにロードされたオブジェクトの filtee の依存を処理します。通常、filtee は、フィルタオ ブジェクトから最初のシンボルの解決時点で、オープンされ ます。 直接の実行モード ld-elf.so.1 は、通常、暗黙的に使用され、実行されたバイナリの PT_INTERP プ ログラムヘッダによって要求されるようにカーネルによってロードされます。ま た、FreeBSD は、動的なリンカのための直接の実行モードもサポートしていま す。このモードで、ユーザは、ld-elf.so.1 を明示的に実行し、引数としてリン クされ、実行されるプログラムのパスを提供します。このモードは、バイナリを 変更せずに、またはインストールされた動的なリンカを変更せずに、プログラム の活性化のために、標準でない動的なリンカの使用を許可します。実行オプショ ンは、指定されます。 直接的な呼び出しの構文は、次の通りです。 /libexec/ld-elf.so.1 [-f fd] [-p] [--] image_path [image arguments] オプションは、次の通りです: -f fd ファイル記述子 fd は、ld-elf.so.1 によって活性化されるバイナリを 参照します。ld-elf.so.1 を実行するとき、プロセスで既にオープンさ れていなければなりません。このオプションが指定されるなら、 image_path は、プログラムに argv[0] 値を提供するためだけに使用さ れます。 -p image_path 引数が、スラッシュ ``/'' 文字を含まない名前を指定する なら、ld-elf.so.1 は、実行するバイナリを見つけるために環境変数 PATH によって提供された検索パスを使用します。 -- ld-elf.so.1 オプションを終わります。-- に続く引数は、実行するバイ ナリのパスとして解釈されます。 直接的な実行モードで、ld-elf.so.1 は、現在のユーザのためのバイナリ実行 パーミッションの検証をエミュレートします。これは、単純に制限された実行環 境のユーザ予想を壊すことを避けるために行われます。検証は、Unix の DACs の みを使用し、ACLs を無視し、もちろん競合状態になる傾向があります。そのよう な制限に依存している環境は、それ自体で弱く、壊れやすくなっています。 関連ファイル /var/run/ld-elf.so.hints ヒントファイル。 /var/run/ld-elf32.so.hints 64 ビットシステムで 32 ビットバイナリのための ヒントファイル。 /etc/libmap.conf libmap 設定ファイル。 /etc/libmap32.conf 64 ビットシステムで 32 ビットバイナリのための libmap 設定ファイル。 関連項目 ld(1), ldd(1), capsicum(4), elf(5), libmap.conf(5), ldconfig(8) FreeBSD 11.4 May 20, 2017 FreeBSD 11.4