程序是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是文件名的最后部分吗?这到底是什么意思?


当前回答

我使用Ubuntu 18.04

安装相应的-dev包对我来说很有效,

sudo apt install libgconf2-dev

在安装上面的包之前,我得到了以下错误:

turtl: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory

其他回答

这里有一些你可以尝试的解决方案:

LDCONFIG

正如AbiusX指出的:如果您刚刚安装了库,那么您可能只需要运行ldconfig。

sudo ldconfig

Ldconfig创建必要的链接和到最近的缓存 在命令中指定的目录中找到的共享库 在/etc/ld.so.conf文件中,在受信任的目录中 (/lib和/usr/lib)。

通常您的包管理器会在安装新库时处理这个问题,但并非总是如此,即使这不是您的问题,运行ldconfig也无妨。

开发包或版本错误

如果这不起作用,我也会检查Paul的建议,并寻找一个“-dev”版本的库。许多库被分为开发包和非开发包。你可以使用这个命令来查找它:

apt-cache search <libraryname>

如果您只是安装了错误的库版本,这也会有所帮助。有些库同时以不同的版本发布,例如Python。

图书馆的位置

如果您确定安装了正确的包,而ldconfig没有找到它,那么它可能只是在一个非标准目录中。默认情况下,ldconfig会在/lib、/usr/lib和/etc/ld.so.conf和$LD_LIBRARY_PATH目录中查找。如果你的库在其他地方,你可以在/etc/ld.so.conf中自己的行中添加目录,将库的路径附加到$LD_LIBRARY_PATH,或者将库移动到/usr/lib.然后执行ldconfig命令。

要找到图书馆的位置,试试这个:

sudo find / -iname *libraryname*.so*

(用你的库名替换libraryname)

如果您选择$LD_LIBRARY_PATH路径,则需要将其放到~/中。Bashrc文件,以便每次登录时运行:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/library
cd /home/<user_name>/
sudo vi .bash_profile

把这几行加在末尾

LD_LIBRARY_PATH=/usr/local/lib:<any other paths you want>
export LD_LIBRARY_PATH

想要添加的内容是,如果库位于非标准路径中,请在路径后面运行ldconfig。

例如,我必须跑:

sudo ldconfig /opt/intel/oneapi/mkl/2021.2.0/lib/intel64

在Intel MKL上编译R

由于系统无法引用提到的库文件而发生错误。采取以下步骤:

执行locate libpthread_rt.so。1将列出所有具有该名称的文件的路径。假设路径是/home/user/ loco。 拷贝路径,执行cd home/USERNAME命令。将USERNAME替换为要运行该文件的当前活动用户的名称。 运行vi .bash_profile,在LD_LIBRARY_PATH参数的末尾,就在.之前,添加一行/lib://home/usr/loc:..保存文件。 关闭终端并重新启动应用程序。它应该运行。

在这里可以找到一个类似的问题。 我尝试过上面提到的解决方案,它确实有效。

前面几个问题的答案可能有用。但下面是一个简单的方法来解决它。 它通过重新安装libwbclient包来工作 在fedora:

dnf reinstall libwbclient