ldconfig
何するコマンド?
書き方
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 | バージョン情報を表示する |
補足事項
共有ライブラリは「いろんなプログラムから使える、プログラムの部品」です。
「キャッシュ」という用語も覚えておいてください。
キャッシュは「よく使うデータを取り出しやすいところに準備しておく仕組み」です。
キャッシュとしての役割で使われるファイルを「キャッシュファイル」と言ったりします。
あとは「/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」コマンドの使い方を見てみましょう。
オプションを何も指定しないで
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
基本的な使い方は、そんなところです。
