ldd 说未找到,但 .so 文件位于 /usr/lib 中

ldd 说未找到,但 .so 文件位于 /usr/lib 中

当我输入ldd可执行文件时,会出现一个not found警告。

libCmp.so => not found
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6ed7000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6e6c000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6e48000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6d63000)

但这个so文件是在/usr/lib.当我输入 时,我注意到输出中file libCmp.so没有任何信息。buildID

libCmp.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

的输出file libgcc_s.so.1

libgcc_s.so.1: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x6b7de7cba96b907b2961892b76c176b1ddbf4bee, stripped

这是一个问题吗?以及如何将此信息添加到文件中?


我尝试ldconfig -v |grep libCmp输入/usr/lib

/sbin/ldconfig: Path `/lib/arm-linux-gnueabihf' given more than once
/sbin/ldconfig: Path `/usr/lib/arm-linux-gnueabihf' given more than once
/sbin/ldconfig: /lib/arm-linux-gnueabihf/ld-2.13.so is the dynamic linker, ignoring

    libCmp.so -> libCmp.so

但没有任何改变

答案1

重新构建动态链接器运行时绑定(作为 root):

ldconfig -v | grep libCmp

它应该 a) 输出你的库(意味着它被发现了) b) 正确安装所需的符号链接,这样将来就能找到该库

缺少 build-id 没有问题。

答案2

如果您最近添加了 libCmp。

作为 root 你可以尝试:

ldconfig -v

ldconfig 创建指向在命令行指定的目录、文件 /etc/ld.so.conf 以及受信任目录(/lib 和 /usr/lib)中找到的最新共享库的必要链接和缓存。缓存由运行时链接器 ld.so 或 ld-linux.so 使用

-v 将使 ldconfig 列出它在缓存中链接的所有文件。然后您可以查看输出并确认 libCmp 的存在。

相关内容