linux - ldconfig 仅加载 .so 文件

标签 linux shared-libraries snort

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

snort: error while loading shared libraries: libdnet.1: cannot open shared object file: No such file or directory

现在我知道我应该通过运行 ldconfig 并将库的路径放入 /etc/ld.so.conf 来添加库。 libdnet 位于 /usr/local/lib 中,所以我不必修改 ld.so.conf,因为 it already covers that dirctory .所以我运行了以下命令并跟踪输出,我注意到我的库没有被加载。

ldconfig -v

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

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

最佳答案

找到答案 here .解决方案很简单:制作与图案匹配的副本。

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

不太受欢迎alternative :

$ LD_LIBRARY_PATH=/usr/local/lib
$ export LD_LIBRARY_PATH

关于linux - ldconfig 仅加载 .so 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175913/

相关文章:

linux - 每 10 分钟配置一次 Cron 任务并在 6 :30 am 开始

linux - 在每次 vagrant up 命令后,如何防止 RSA key 的指纹发生变化?

通过 Eclipse CDT 创建共享库

gcc - 为什么在使用 -rpath 时需要 -L?

regex - Snort/PCRE 正则表达式 : odd character class syntax

linux - bash 中出现意外的文件结尾错误

linux - 运行 screen 并命令 crontab

fortran - 使用 ifort 构建可执行共享库

c - 在C中包含头文件并编译

java - 构建入侵检测系统,但从哪里开始