程序是 Xenomai 测试套件的一部分,从 Linux PC 交叉编译到 Linux+Xenomai ARM 工具链。
# echo $LD_LIBRARY_PATH
/lib
# ls /lib
ld-2.3.3.so libdl-2.3.3.so libpthread-0.10.so
ld-linux.so.2 libdl.so.2 libpthread.so.0
libc-2.3.3.so libgcc_s.so libpthread_rt.so
libc.so.6 libgcc_s.so.1 libstdc++.so.6
libcrypt-2.3.3.so libm-2.3.3.so libstdc++.so.6.0.9
libcrypt.so.1 libm.so.6
# ./clocktest
./clocktest: error while loading shared libraries: libpthread_rt.so.1: cannot open shared object file: No such file or directory
.1
在文件名的末尾吗?这到底是什么意思?
原文由 zaratustra 发布,翻译遵循 CC BY-SA 4.0 许可协议
更新
虽然我在下面写的作为关于共享库的一般答案是正确的,但我认为这类消息的最常见原因是因为您已经安装了一个包,但没有安装该包的
-dev
版本.好吧,这不是说谎 - 该列表中没有
libpthread_rt.so.1
。您可能需要重新配置和重新构建它,以便它取决于您拥有的库,或者安装提供的任何东西libpthread_rt.so.1
。一般来说,.so后面的数字是版本号,你会经常发现它们是相互的符号链接,所以如果你有libfoo.so的1.1版本,你就会有一个真实的文件libfoo.so.1.0,并且符号链接 foo.so 和 foo.so.1 指向 libfoo.so.1.0。如果您安装 1.1 版本而不删除另一个版本,您将拥有一个 libfoo.so.1.1,并且 libfoo.so.1 和 libfoo.so 现在将指向新版本,但任何需要该确切版本的代码都可以使用 libfoo.so.1.0 文件。仅依赖于版本 1 API,但不关心它是 1.0 还是 1.1 的代码将指定 libfoo.so.1。正如 orip 在评论中指出的那样,这 在这里 得到了很好的解释。
在您的情况下,您 可能 会摆脱符号链接
libpthread_rt.so.1
到libpthread_rt.so
。但是,不能保证它不会破坏您的密码并吃掉您的电视晚餐。