ldconfig和ld.so.cache之间的关系

ldconfig和ld.so.cache之间的关系

我重启电脑后,ld.so.cache里面的信息仍然存在,所以我的问题如下:

  1. 信息总是保存在那里吗?是不是重启后就被删除了之类的?比如 RAM 或浏览器缓存被删除?

  2. 当我删除安装了一些共享库的应用程序后,它是否知道也从 中删除信息ld.so.cache?如果我使用ldconfig它会删除信息吗?它实际上是如何运作的?

  3. 如果我正在安装程序,我的计算机如何知道使用已添加的新库?apt-get install运行后ldconfig

答案1

Linux 程序使用称为共享对象的库。共享对象的扩展名为 .so。查看命令ls运行的 SO 用法ldd /bin/ls

  1. 默认情况下,库存储在 /lib /usr/lib 和 /usr/local/lib 中(32/64 位为 /lib32、/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。

我希望,我做对了。请随时纠正我。

答案2

apt-get并且dpkg都调用ldconfig重建缓存。

我想这是在每次批量操作结束时完成的,但不确定。

我认为没有办法从缓存中删除特定数据,它只是重建,例如:

rm /etc/ld.so.cache
ldconfig

您可以使用它ldconfig -p来检查缓存的内容。

在我的系统上,ldconfig每次重新启动都会被调用,但如果/etc/用于缓存,那么它不会每次都从头开始创建;如果你想要的话,你必须自己重建它。

如果您手动删除一些库,则必须重建它。

相关内容