3

我正在尝试运行一个使用 libdnet 的程序(Snort),但找不到它并输出:

snort:加载共享库时出错:libdnet.1:无法打开共享对象文件:没有这样的文件或目录

现在我知道我应该通过运行ldconfig并将库的路径放入/etc/ld.so.conf. libdnet 位于,/usr/local/lib因此我不必修改ld.so.conf,因为它已经涵盖了该目录。所以我运行了以下命令并跟踪输出,我注意到我的库没有被加载。

ldconfig -v

显然 ldconfig 只加载.so名称中有某处且libdnet.1与模式不匹配的文件。
我已经从源代码构建了 libdnet 并使用./configure; make; make install命令安装了它。除非必须,否则我宁愿不使用包管理器安装它。我应该怎么办?

编辑:这里
说库应该匹配模式,但我不能重命名库。我既没有做到,也没有在我自己的应用程序中使用它:如果我重命名它,它将被加载,但我认为 Snort 正在寻找not 。lib*.so*libdnet.1libdnet.so.1

4

1 回答 1

3

在这里找到了答案。解决方案很简单:制作与模式匹配的副本。

cp /usr/local/lib/libdnet.1.0.1 /usr/local/lib/libdnet.so.1.0.1

一个不太受欢迎的替代方案

$ LD_LIBRARY_PATH=/usr/local/lib
$ export LD_LIBRARY_PATH
于 2014-03-04T15:48:35.313 回答