我可以使用自己的ld.so.cache吗?


14

ldconfig 有两个有趣的选项:

-f conf
      Use conf instead of /etc/ld.so.conf.
-C cache
      Use cache instead of /etc/ld.so.cache.

我尝试复制/etc/ld.so.conf到自己的主目录,并对其进行了编辑,以包括本地库/home/syockit/local/usr/lib等的路径,然后运行

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache

然后,为了确认库是否已缓存,我运行了

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less

它不仅包括我的所有库,还包括系统库。

现在,我想让默认链接器使用这两个。但是在man ld.so我看来,没有提到能够使用custom .conf.cache。那么,以上两种选择的意义ldconfig何在?

Answers:


9

我认为您的问题的答案是否定的,尽管您可以通过其他方式完成同样的事情。

在ld.so中,我没有提到能够使用自定义.conf或.cache

是的,但是提到了$LD_LIBRARY_PATHand和--library-path,前者更有用。

那么以上两个选项的意义是ldconfig什么?

因此,您可以创建一个高速缓存而无需覆盖系统之一,而不必使用系统conf。


...只是为了它?还是用于系统取证?
syockit 2014年

1
它可能用于系统映像或chroot环境等
。– goldilocks

5

/etc/ld.so.conf仅由ldconfig(缓存生成程序)读取,而不由ld.so(动态加载程序)读取。如果要生成与系统默认值不同的缓存,则可以更改配置文件的位置。

/etc/ld.so.cache被读取ld.so,您无法使其从其他位置读取。尽管如此,将另一个输出位置传递到可能还是有用的ldconfig。最常见的用例可能是chroot环境。您可以ldconfig -r /some/root用来ldconfig在备用根目录上运行,并将输出放置在所需的任何位置(该根目录的内部或外部)。您需要将输出发出/some/root/etc/ld.so.cache或在以后复制到那里。还有其他相当晦涩的用例,例如,如果您要以ldconfig非特权用户(无法写入/etc/ld.so.cache)的身份运行,然后在以后将文件移至适当位置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.