ldconfig【コマンド】
コマンドだよ
UNIX系で使えるよ
共有ライブラリを認識させるよ
簡単に書くよ
ldconfig【コマンド】とは
コンピュータさんに対する命令文(コマンド)のひとつ
であり
共有ライブラリ
(いろいろなプログラムから使える、プログラムの部品)をコンピュータに教えてやるときに使うコマンド
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・共有
・ライブラリ
・共有ライブラリ
・キャッシュ
・キャッシュファイル
・/etc/ld.so.conf
・/etc/ld.so.cache
について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
共有は、今回は「一緒に使おうね~」の意味です。
ライブラリは「プログラムの部品をいっぱい集めて、ひとまとめにしたファイル」です。
いろいろできる便利な部品が詰まっています。
共有ライブラリは「いろいろなプログラムから使えるライブラリ」です。
文字通り、共有して使えるライブラリです。
キャッシュは「よく使うデータを取り出しやすいところに準備しておく仕組み」です。
キャッシュファイルはキャッシュとしての役割で使われるファイル」です。
あとは「/etc/ld.so.conf」と「/etc/ld.so.cache」の関係性も理解しておきましょう。
「/etc/ld.so.conf」は「共有ライブラリの検索パス(共有ライブラリの探し場所)を書いておく設定ファイル」です。
「etc」ディレクトリの中の「ld.so.conf」ファイルで「/etc/ld.so.conf」ね。
「/etc/ld.so.cache」は「共有ライブラリの名前と実際のファイルの置き場所が書いてあるファイル」です。
「etc」ディレクトリの中の「ld.so.cache」ファイルで「/etc/ld.so.cache」ね。
「/etc/ld.so.conf」には共有ライブラリの置いてある場所を書きます。
人間様が編集するのは、このファイルです。
ただし、コンピュータさんは「/etc/ld.so.conf」を見ません。
「/etc/ld.so.cache」を見て、お仕事をしています。
そこで「/etc/ld.so.conf」を編集した後は中身を「/etc/ld.so.cache」に反映してあげる必要があります。
以上を踏まえて
「/etc/ld.so.conf」を「/etc/ld.so.cache」に反映するときに使うコマンド
が「ldconfig」コマンドです。
コンピュータさんは「/etc/ld.so.cache」を見て「どんな共有ライブラリがあるかな~」を判断しています。
「ldconfig」コマンドを実行することによって「/etc/ld.so.conf」の内容をコンピュータさんに教えてあげるのです。
「ldconfig」コマンドはUNIX系(LinuxとかMacとか)で使えます。
書き方は
ldconfig [オプション]
です。
オプションは、あれやこれやとあります。
| オプション | 説明 |
|---|---|
| -c | 「使用する形式: new、old または compat(デフォルト)」らしい |
| -C【ファイル名】 | 「/etc/ld.so.cache」の代わりに指定したファイルを使う |
| -f【ファイル名】 | 「/etc/ld.so.conf」の代わりに指定したファイルを使う |
| -i | 「補助キャッシュファイルを無視しています」らしい |
| --ignore-aux-cache | 「補助キャッシュファイルを無視しています」らしい |
| -l | 「個々のライブラリを手動でリンクしてください」らしい |
| -n | 「コマンドラインで指定されたディレクトリのみ処理します。キャッシュは作成しません。」らしい |
| -N | 「キャッシュの構築を行いません」らしい |
| -p | 「/etc/ld.so.cache」の中身を表示する |
| --print-cache | 「/etc/ld.so.cache」の中身を表示する |
| -r【パス】 | ルートディレクトリを指定したディレクトリに変える |
| -v | 詳細情報を表示する |
| --verbose | 詳細情報を表示する |
| -X | 「リンクを生成しません」らしい |
| -? | ヘルプを表示する |
| --help | ヘルプを表示する |
| --usage | 使い方を表示する |
| -V | バージョン情報を表示する |
| --version | バージョン情報を表示する |
などです。
オプションを何も指定しないで
ldconfig
を実行すると、コンピュータさんは「/etc/ld.so.conf」の中に書いてある共有ライブラリの置き場所を見に行きます。
そして、そこで見つけた共有ライブラリを「/etc/ld.so.cache」に登録してくれます。
結果として「/etc/ld.so.conf」に書いた内容がコンピュータに反映される理屈です。

あとは「-p」オプションも覚えておいてください。
「-p」オプションを指定して
ldconfig -p
を実行すると「/etc/ld.so.cache」の中身が表示されます。
私の環境(CentOS 7)では以下の内容が表示されました。
320 個のライブラリがキャッシュ `/etc/ld.so.cache' 内で見つかりました
p11-kit-trust.so (libc6,x86-64) => /lib64/p11-kit-trust.so
libz.so.1 (libc6,x86-64) => /lib64/libz.so.1
libxtables.so.10 (libc6,x86-64) => /lib64/libxtables.so.10
libxshmfence.so.1 (libc6,x86-64) => /lib64/libxshmfence.so.1
(中略)
libICE.so.6 (libc6,x86-64) => /lib64/libICE.so.6
libGL.so.1 (libc6,x86-64) => /lib64/libGL.so.1
libEGL.so.1 (libc6,x86-64) => /lib64/libEGL.so.1
ld-linux-x86-64.so.2 (libc6,x86-64) => /lib64/ld-linux-x86-64.so.2
基本的な使い方は、そんなところです。
それ以外のオプションは、必要に応じて、情報を補完してください。
一言でまとめるよ
まぁ「ldconfig」ってコマンドが出てきたら「共有ライブラリ
(いろいろなプログラムから使える、プログラムの部品)を認識させるときに使うんだな~」と お考えください。
おまけ
■訳してみるよ
「ld」は何の略でしょうね。
とりあえず、そのまま「ld」としておきます。
「config」は多分「configuration(コンフィグレーション)」の略です。
「configuration(コンフィグレーション)」の意味は「配置」とか「形状」とか「構成」とかです。
何となく くっつけると
ldの構成
となります。
■検索してみる?






