该程序是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结尾是文件名的一部分。那到底是什么意思呢?
更新 尽管下面我写的是关于共享库的一般答案,但我认为这类消息的最常见原因是因为您已经安装了一个软件包,但没有安装该软件包的“ -dev”版本。
好吧,这不是在说谎-libpthread_rt.so.1该列表中没有任何内容。您可能需要重新配置和重新构建它,以便它取决于您拥有的库,或者安装任何提供的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在评论中指出的那样,这在http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html进行了很好的解释。
在你的情况,你 可能会 逃脱符号链接libpthread_rt.so.1到libpthread_rt.so。但是,不能保证它不会破坏您的代码并吃您的电视晚餐。
libpthread_rt.so