web-dev-qa-db-ja.com

ldconfigとld.so.cacheの関係

コンピュータを再起動した後も、ld.so.cacheにはまだ情報が含まれているため、質問は次のとおりです。

  1. 情報は常にそこに保管されていますか?再起動後に削除されるのではないですか? RAMまたはブラウザのキャッシュが削除されますか?

  2. いくつかの共有ライブラリをインストールしたアプリケーションを削除した後、ld.so.cacheからも情報を削除することを知っていますか? ldconfigを使用すると、情報が削除されますか?実際にはどのように機能しますか?

  3. プログラムをインストールしている場合、コンピューターはどのようにして、追加された新しいライブラリを使用することを認識しますか? apt-get installの実行後、ldconfigは実行されますか?

8
Nirel

Linuxプログラムは、共有オブジェクトと呼ばれるライブラリを使用しています。共有オブジェクトの拡張子は.soです。 S.O.を表示するにはコマンドの使用法ls run ldd /bin/ls

  1. デフォルトでは、libは/ lib/usr/libおよび/ usr/local/lib(/ lib32、32/64ビットの場合は/ lib64)に保存されます。追加のライブラリが見つかる情報は/etc/ld.so.conf.d/に保存されています。特定のライブラリへのパスを含む単一の.confファイルがあります。 /opt/foo/lib。 /etc/ld.so.conf.d/での検索は非常に遅いため、ldconfigは/etc/ld.so.cacheファイルを生成します。これは、これのバイナリバージョンであり、検索速度を向上させます。最初の質問に答える。ファイルを保持しません。

  2. はい、apt-getまたはdpkg(?)がldconfigをトリガーしています。仕組み-1を参照してください。

  3. はい、1をご覧ください。

私はそれを正しく理解したと思います。私を自由に修正してください。

6
Michael D.

apt-getdpkgはどちらもldconfigを呼び出してキャッシュを再構築します。

これはすべての一括操作の最後に行われると思いますが、確実にはわかりません。

特定のデータをキャッシュから削除する方法はないと思います、それは単に再構築されたものです:

rm /etc/ld.so.cache
ldconfig

ldconfig -pを使用して、キャッシュの内容を確認できます。

私のシステムでは、再起動のたびにldconfigが呼び出されますが、/etc/がキャッシュに使用されている場合、毎回ゼロから作成されません。必要な場合は、自分で再構築する必要があります。

一部のライブラリを手動で削除した場合は、再構築する必要があります。

3
Neil McGill