使用 /usr/local/lib 中的共享库

使用 /usr/local/lib 中的共享库

我已经从源代码构建了一些库,之后的文件make install位于/usr/local/lib

例如,就我而言,我的文件libodb-2.2.so位于此目录中。

但是,当我启动与 链接的可执行文件时libodb,出现错误:加载共享库时出错:libodb-2.2.so: cannont open shared object file: No such file or directory.

这是否意味着我没有正确构建可执行文件?或者我应该向系统表明该文件夹中/usr/local/lib也可能有一些有趣的库?

我使用的是 Ubuntu 12.04,Linux 内核 3.2.0-38-generic。

答案1

对于当前会话,您可以

导出 LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib

或者要使更改永久化,您可以添加/usr/local/lib/etc/ld.so.conf或其中包含的内容)并ldconfig以 root 身份运行。

如果您仍然遇到问题,运行ldd [executable name]将向您显示它正在尝试查找的库以及找不到的库。

答案2

ldconfig如果您在构建库后已经运行,请继续阅读。如果不,阅读有关 ldconfig 的信息第一的。

/usr/local/lib可能不在 ldconfig 使用的库路径中。你可以这样做:

ldconfig /usr/local/lib

这些东西应该添加到链接器缓存中,但最好正确添加路径。确保您有一个/etc/ld.so.conf.d目录。如果是这样,请添加一个文件(将其命名为“usr-local.conf”或其他名称),然后在其中添加一行:

/usr/local/lib

现在运行ldconfig。如果你没有 ld.so.conf.d 目录,你应该有一个/etc/ld.so.conf 文件您可以将该行添加到其末尾。

相关内容