LDCONFIG(8)

名称
ldconfig - 共有ライブラリのキャッシュ制御を行う

書式
ldconfig [-cmrsSv] [directory ...]

解説
ldconfig は、ランタイムリンカ ld.so が高速に共有ライブラリを探すためのヒントを与えるためのものです。 複数のディレクトリを指定することができます。 デフォルトでは、ライタイムリンカは、システム組み込みのディレクトリと、 /etc/ld.so.conf に書かれているディレクトリと、コマンドラインで指定されたディレクトリ directories を (与えられた順で) スキャンして共有ライブラリを探し、その結果を /var/run/ld.so.hints に格納します。こうして、必要な共有オブジェクトを ld.so がロードする時のディレクトリ検索操作のオーバヘッドを隠蔽できるように あらかじめ用意しておきます。

こうして見つかった共有ライブラリは、実行しようとしているプログラムが 必要としてロードしようとする時に、自動的に利用可能になります。

環境変数 LD_LIBRARY_PATH は、共有ライブラリを検索するディレクトリのリストを 指定するために用います。 LD_LIBRARY_PATH には、ディレクトリのリストを ‘’ で区切ったものを指定します。 ld.so は、この環境変数で指定されたディレクトリも検索します。 これは ld で -L オプションで指定されたディレクトリを実行時に変更できるように見せかける機能 です。

ldconfig は、ブート時に起動するのが普通です。

ldconfig は、以下のオプションを認識します:

-c  共有ライブラリの検索時に /etc/ld.so.conf 内のディレクトリをスキャンしない。

-m  引数で指定したディレクトリをスキャンした結果を既存のヒントファイルにマージ します。デフォルトでは、ヒントファイルを作り直してしまいます。

-r  現在の ld.so.hists の内容を標準出力に出力します。ヒントファイルは変更されません。

-s  システム組込みのディレクトリ (“/usr/lib”) も、 /etc/ld.so.conf 内のディレクトリもスキャンしません。

-S  システム組込みのディレクトリ (“/usr/lib”) をスキャンしません ( /etc/ld.so.conf 内のディレクトリは検索します)。

-v  詳細なメッセージを出力します。

セキュリティ
set-user-ID されたプログラムのアドレス空間に共有ライブラリをロードする場合には、 特別に注意を払う必要があります。このようなプログラムを実行する場合、 ld.so は ld.so.hints ファイルにある共有ライブラリしかロードしません。特に、 LD_LIBRARY_PATH と LD_PRELOAD は、ライブラリの検索には使われません。よって、ldconfig の役目は 2 つあります。 検索の高速化のためにヒントを作ることと、安全にロードできる 共有オブジェクトが置かれている、信用できるディレクトリの集合を 提供することです。 ldconfig に指定したディレクトリの集合はシステム管理者の管理下にあるという仮定が あります。さらに ld.so は set-user-ID されたプログラムの環境から LD_LIBRARY_PATH と LD_PRELOAD を削除するという手助けをします。

関連ファイル
/var/run/ld.so.hints, /etc/ld.so.conf

関連項目
ld(1), ld.so(1), ld.so.conf(5), link(5)

歴史
ldconfig ユーティリティは最初に SunOS 4.0 で登場しました。 現在のものは NetBSD 0.9a から登場しました。