「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

/etc/ld.so.cache

pointこの用語のポイント

pointキャッシュファイルだよ

pointUNIX系のOSで使われるよ

point共有ライブラリの名前とパスが書いてあるよ

スポンサーリンク

簡単に書くよ

/etc/ld.so.cacheとは

UNIX系のOS(コンピュータの人格に相当するソフト)(Linuxとか)で使われるファイルのひとつ
であり

共有ライブラリ(いろいろなプログラムから使える、プログラムの部品)の名前と実際のファイルの置き場所が書いてあるファイル
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

共有
ライブラリ
共有ライブラリ
キャッシュ
キャッシュファイル


について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

共有は、今回は「一緒に使おうね~」の意味です。

/etc/ld.so.cache

ライブラリは「プログラムの部品をいっぱい集めて、ひとまとめにしたファイル」です。
いろいろできる便利な部品が詰まっています。

/etc/ld.so.cache2

共有ライブラリは「いろいろなプログラムから使えるライブラリ」です。
文字通り、共有して使えるライブラリです。

/etc/ld.so.cache3

キャッシュは「よく使うデータを取り出しやすいところに準備しておく仕組み」です。

/etc/ld.so.cache4

キャッシュファイルはキャッシュとしての役割で使われるファイル」です。

/etc/ld.so.cache5

以上を踏まえて

共有ライブラリの名前と実際のファイルの置き場所が書いてあるキャッシュファイル

が「/etc/ld.so.cache」です。
「etc」ディレクトリの中の「ld.so.cache」ファイルで「/etc/ld.so.cache」ね。

/etc/ld.so.cache6

「/etc/ld.so.cache」はUNIX系のOSLinuxとかMacとか)で使われるファイルです。
中身はバイナリデータ(人間が見てもよく分からないデータ)なので

more /etc/ld.so.cache

とかやってもキレイに表示されません。
「/etc/ld.so.cache」の中身を見たい場合は

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


ここで2行目の

p11-kit-trust.so (libc6,x86-64) => /lib64/p11-kit-trust.so

に注目してください。
これは

「p11-kit-trust.so」をくれ!と言われたら「/lib64/p11-kit-trust.so」をくれてやれや!

と書いてあります。

もちろん「『p11-kit-trust.so』をくれ!」と言われてから「『p11-kit-trust.so』はどこにあるかな~」と探しても間違いでは ありません。
でも、それだと時間がかかりますよね?

/etc/ld.so.cache7

あらかじめ置き場所が分かっていれば持ってくるのも簡単です。
「くれ!」と言われたら、すぐに「はいよ!」と渡せるでしょう。

/etc/ld.so.cache8

このように、コンピュータさんの手抜き目的で用意されているファイルが「/etc/ld.so.cache」です。
共有ライブラリの名前と実際のファイルの置き場所が書いてあって、名前を聞けばすぐに置き場所が分かるようになっています。

これで大体の説明は終わりですが、せっかくなので「/etc/ld.so.conf」との関係性も書いておきますね。

/etc/ld.so.conf」は「共有ライブラリの検索パス(共有ライブラリの探し場所)を書いておく設定ファイル」です。
「etc」ディレクトリの中の「ld.so.conf」ファイルで「/etc/ld.so.conf」ね。

/etc/ld.so.cache9

/etc/ld.so.conf」には共有ライブラリが置いてある場所を書きます。
ただし、コンピュータさんは「/etc/ld.so.conf」を見ません。
/etc/ld.so.cache」を見て、お仕事をしています。

/etc/ld.so.cache10

そこで「/etc/ld.so.conf」を編集した後は「ldconfig」というコマンドを実行して「/etc/ld.so.conf」の中身を「/etc/ld.so.cache」に反映するのです。

/etc/ld.so.cache11

具体的には

ldconfig

を実行します。
そうすると、コンピュータさんは「/etc/ld.so.conf」の中に書いてある共有ライブラリの置き場所を見に行きます。
そして、そこで見つけた共有ライブラリを「/etc/ld.so.cache」に登録してくれます。
結果として「/etc/ld.so.conf」に書いた内容がコンピュータに反映される理屈です。

この流れを実際の例で見てみましょう。

前準備として

cp -p /lib64/libz.so.1 /usr/local/lib/

を実行して「libz.so.1」を「/usr/local/lib/」にコピーしておきます。

ちなみに「libz.so.1」をコピーしたのは、自前で実験用の共有ライブラリを作るのが手間だったからです。
実際に動いているライブラリを適当にコピーしました。
本来は、自作ライブラリや未登録のライブラリに対して、あれこれします。

さて、それでは「/usr/local/lib/」にコピーした「libz.so.1」を、つまり「/usr/local/lib/libz.so.1」をコンピュータさんに認識させてみましょう。

まず、やるのは「/etc/ld.so.conf」の編集です。
共有ライブラリの置いてある場所「/usr/local/lib/」を追記します。

vi /etc/ld.so.conf

で「/etc/ld.so.conf」を開いて

/usr/local/lib/

を追記しました。
私の環境における編集後の「/etc/ld.so.conf」は以下の内容です。

include ld.so.conf.d/*.conf
/usr/local/lib


次は「/etc/ld.so.conf」の内容を「/etc/ld.so.cache」に反映します。

ldconfig

を実行します。

「ldconfig」コマンドを実行すると「/etc/ld.so.conf」の内容が「/etc/ld.so.cache」に反映されます。
具体的には「/usr/local/lib/libz.so.1」が「/etc/ld.so.cache」に登録されます。

ldconfig -p

を実行して「/etc/ld.so.cache」の中を見ると

libz.so.1 (libc6,x86-64) => /usr/local/lib/libz.so.1

という記述が追加されていました。

ここまでの流れをまとめます。

1.作った共有ライブラリをどこかに置く
2.「1」の置き場所を「/etc/ld.so.conf」に書く
3.「ldconfig」コマンドを実行する


とすることで、作った共有ライブラリが「/etc/ld.so.cache」に登録されます。

これが「/etc/ld.so.conf」と「/etc/ld.so.cache」の関係性です。

/etc/ld.so.conf → 設定ファイル。共有ライブラリの置き場所を書く
/etc/ld.so.cache → キャッシュファイル。共有ライブラリの置き場所が書かれている


となります。


image piyo2

一言でまとめるよ

まぁ「/etc/ld.so.cache」って単語が出てきたら「共有ライブラリ(いろいろなプログラムから使える、プログラムの部品)の置き場所が書いてあるキャッシュファイルなんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像002
書籍画像065

おまけ

■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
優れたエンジニアがコミュニティの中でしていること
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
タヌキとキツネ