如果通过 /etc/ld.so.conf.d/ 中的配置文件设置,为什么每次将 .so 库放入 /usr/local/lib 等目录时都需要运行 ldconfig?

如果通过 /etc/ld.so.conf.d/ 中的配置文件设置,为什么每次将 .so 库放入 /usr/local/lib 等目录时都需要运行 ldconfig?

我在 docker 中运行 centos 6.10。正如标题中所描述的,我在 .conf 文件中设置了/usr/local/lib和。每次将.so库放入时都需要运行,否则将找不到它(编译Python 3时)。但是,设置为(不将它们写入 中的conf 文件)在放置库后不需要任何额外的步骤。是什么原因造成的?/usr/local/lib64/etc/ld.so.conf.d/ldconfig/usr/local/libLD_LIBRARY_PATH/usr/local/lib:/usr/local/lib64/etc/ld.so.conf.d/

顺便问一下,为什么像/lib和 这样的目录/usr/lib没有设置在/etc/ld.so.confor中/etc/ld.so.conf.d/

答案1

当应用程序通过 glibc 运行时,LD_LIBRARY_PATH=PATH app将扫描指定目录中的所有文件。

当您不使用此标志时,仅/etc/ld.so.cache打开缓存库 ( ) 以加快进程。想象一下,您需要连续运行某个应用程序 100K 次,并且每次都必须重新扫描所有目录。它可能会让一切变得缓慢。

相关内容