如何“安装”共享库

如何“安装”共享库

我正在开发一个使用外部库的 C++ 应用程序,使用 gcc。例如libtifflibpng。我获得了这些apt-get,一切正常。

但后来我添加了另一个作为独立的.a.so lib文件对提供的第三方库。我检测到另一个.so存储在 中/usr/lib/x86_64-linux-gnu,我将新的复制到.so了那里。我成功链接了我的应用程序,但执行失败并显示消息“ error while loading shared libraries: libThirdParty.so: cannot open shared object file: No such file or directory

我缺少什么?

答案1

应用程序有两种方式查找其库:

  • 环境变量LD_LIBRARY_PATH。将其设置为包含库的路径,以冒号分隔。首先检查它是否不为空 ( echo $LD_LIBRARY_PATH),如果是则展开它,例如LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/foo/lib:/home/myself/lib。这对于测试来说很好,或者如果您既不是sudoer,如果您想要永久使用它,root可以将其添加到 shell 初始化中(如)。.zshrc但当然,解析变量和搜索文件会比较慢,这就是为什么您通常更喜欢第二种方法:
  • 复制库后,ldconfig以 root 身份或使用sudo.这会扫描标准库路径(/lib/usr/lib/lib64/usr/lib64)以及配置文件中的路径/etc/ld.so.conf和作为ldconfig库的参数给出的路径,并更新ld.so整个系统的库缓存。

答案2

首先,应安装外部库,而不是复制到库位置。安装脚本会将它们放入/usr/lib/usr/local/lib*.这会让事情变得更容易。

当谈到您的图书馆的位置时,我建议/usr/local/lib*。

现在,如果您还没有这样做,则/usr/local/lib可能需要将其 ( ) 放入,如果是这样,您需要运行。如果已经完成则没有必要。/etc/ld.so.conf/sbin/ldconfig

最后,您可以检查我是否找到了您的图书馆 ldconfig -p | grep your_library.so

* 或/usr/lib64/usr/local/lib64对于 x86_64

相关内容