如何让程序找到安装在非默认位置的动态库

在默认的源码安装模式下,动态库会被安装在 /usr/local/lib 之下。那么如何让其他程序可以加载呢?

首先,把这个位置加入到配置文件 /etc/ld.so.conf 或 /etc/ld.so.d/local_lib.conf 中。

$ sudo echo "/usr/local/lib" > /etc/ld.so.d/local_lib.conf

然后,运行 ldconfig 来更新。

比如,我们安装了 oracle client,如何让应用程序找到它提供的动态库呢?除了将它加入到 LD_LIBRARY_PATH 以外,就可以按本文提供的办法。

假设我们把它安装在了 /usr/local/instantclient_12_2,我们创建一个包含该路径的配置文件, 并通过 ldconfig 命令更新.

$ sudo echo "/usr/local/instantclient_12_2" > /etc/ld.so.d/oracle_client.conf
$ sudo ldconfig

在有的发行版中,ldconfig的配置路径是 /etc/ld.so.conf.d.

ldconfig 是如何工作的? https://www.cyberciti.biz/tips/linux-shared-library-management.html 这篇文章给出了介绍。