ldd 找到共享库,但执行二进制文件提示“未找到”

ldd 找到共享库,但执行二进制文件提示“未找到”

安装完Ubuntu 14.04,并安装keepalived的deb后,keeplived无法启动:

aaroot@aatest1:~$ sudo /usr/sbin/keepalived
/usr/sbin/keepalived: error while loading shared libraries: libnetsnmpmibs.so.30: cannot open shared object file: No such file or directory

但使用检查共享库,可以找到ldd缺失的库(符号链接和真实库):libnetsnmpmibs.so.30

aaroot@aatest1:~$ sudo ldd /usr/sbin/keepalived|grep libnetsnmpmibs
    libnetsnmpmibs.so.30 => /usr/lib/x86_64-linux-gnu/libnetsnmpmibs.so.30 (0x00007fd32c3c5000)

重新执行ldconfig发现libnetsnmpmibs.so.30

aaroot@aaaatest1:~$ sudo ldconfig -v |grep libnetsnmpmibs
/sbin/ldconfig.real: Path `/lib/x86_64-linux-gnu' given more than once
/sbin/ldconfig.real: Path `/usr/lib/x86_64-linux-gnu' given more than once
/sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-2.19.so is the dynamic linker, ignoring

    libnetsnmpmibs.so.30 -> libnetsnmpmibs.so.30.0.2

有什么问题吗?

答案1

问题解决了。使用 strace 检查系统调用后,我发现二进制文件尝试打开 ld.so.cache 并被拒绝访问。虽然 apparmor 阻止了该行为并删除了 apparmor 文件,但二进制文件可以完美运行

相关内容