缺少共享库 libvw.so.0

缺少共享库 libvw.so.0

好了,我安装了“vowpal wabbit”包,也用“make test”测试了一下,显示一切正常,但是当我在终端输入“vw”时,出现了以下错误:

vw: error while loading shared libraries: libvw.so.0: cannot open shared object file: No such file or directory

我的系统是 ubuntu12.04-64bit。有人能告诉我如何解决这个问题吗?谢谢

答案1

从来回的消息来看,您似乎已将库安装在 /usr/local/lib 中。但您的应用程序不知道在那里查找该库。

您可以通过几种方式解决这个问题。

  1. 您可以在配置/构建项目时提供特殊标志,以指示二进制文件签入 /usr/local/lib。如果您知道如何在构建时设置标志,则应设置LDFLAGS=-Wl,-rpath,/usr/local/lib。但这会让您重新构建。

  2. 运行时链接器会查看名为的环境变量,LD_LIBRARY_PATH以确定在查找共享库时要检查哪些目录。在这种情况下,如果您键入export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib并运行程序,它应该可以正常工作。

  3. 如果您有多个程序需要 /usr/local/lib 目录,并且您觉得将其包含到每个程序中都是安全的,则可以将运行时链接器设置为每次都尝试 /usr/local/lib。您可以放入文件/etc/ld.so.conf.d或编辑/etc/ld.so.conf以添加 /usr/local/lib。这会影响系统上的每个可执行文件,因此我认为这个方法非常先进。

简而言之,你需要告诉你的程序如何找到这个库。目前最简单的方法是使用以下命令设置变量LD_LIBRARY_PATHexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

答案2

更新:我正在从源代码设置“Quagga”。安装后,当我运行它时,我收到错误“无法打开共享对象文件:没有这样的文件或目录”。就我的情况而言,是缺少“libzebra.so.0”。

我使用了 Rich 在上述评论中建议的“导出”方法。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/foobar/lib

其中“/opt/foobar/lib”是您的应用程序特定的共享库文件夹。对我来说,它是“/usr/local/lib/”

但是,它并没有解决我的问题。然后,为了更新共享库缓存,我不得不ldconfig重建共享库缓存。我找到了这个 Github 帖子,您还可以阅读详细信息如何添加库目录 - toldconfig 缓存

相关内容