无法打开共享对象文件:没有这样的文件或目录

时间:2010-01-31 17:36:29

标签: c++

我遇到了火炬群集的头节点上找不到的共享库。我已经构建了库以及指定库的正确路径,同时用g ++编译我自己的程序“荒谬”。所以我觉得很奇怪。任何的想法?谢谢和问候!

[tim@user1 release]$ make  
...  
...  
g++ -pipe -W -Wall -fopenmp -ggdb3 -O2    -I/home/tim/program_files/ICMCluster/ann_1.1.1/include -I/home/tim/program_files/ICMCluster/libsvm-2.89  -I/home/tim/program_files/ICMCluster/svm_light  -o absurdity  xxxxxx.o  -L/home/tim/program_files/ICMCluster/ann_1.1.1/release/lib -L/home/tim/program_files/ICMCluster/libsvm-2.89/release/lib -L/home/tim/program_files/ICMCluster/svm_light/release/lib -lm -ljpeg -lpng -lz -lANN -lpthread -lsvm -lsvmlight  

[tim@user1 release]$ ./absurdity  
./absurdity: error while loading shared libraries: libsvmlight.so: cannot open shared object file: No such file or directory  

[tim@user1 release]$ ls /home/tim/program_files/ICMCluster/svm_light/release/lib/libsvmlight.so -l  
-rwxr-xr-x 1 tim Brown 121407 Jan 31 12:14 /home/tim/program_files/ICMCluster/svm_light/release/lib/libsvmlight.so 

[tim@user1 release]$ LD_LIBRARY_PATH= /home/tim/program_files/ICMCluster/svm_light/release/lib:$LD_LIBRARY_PAT    
[tim@user1 release]$ export LD_LIBRARY_PATH 

[tim@user1 release]$ ./absurdity  
./absurdity: error while loading shared libraries: libsvmlight.so: cannot open shared object file: No such file or directory  

[tim@user1 release]$ ls  /home/tim/program_files/ICMCluster/svm_light/release/lib  
libsvmlight.a  libsvmlight.so  

4 个答案:

答案 0 :(得分:87)

从我的回答中复制:https://stackoverflow.com/a/9368199/485088

  

以root身份运行ldconfig以更新缓存 - 如果仍然没有帮助,则需要添加文件ld.so.conf的路径(只需在自己的行中输入)或更好然后,将条目添加到目录ld.so.conf.d中的新文件(更容易删除)。

答案 1 :(得分:72)

您的LD_LIBRARY_PATH未包含libsvmlight.so的路径。

$ export LD_LIBRARY_PATH=/home/tim/program_files/ICMCluster/svm_light/release/lib:$LD_LIBRARY_PATH

答案 2 :(得分:8)

row
  

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

通常,软件包管理器在安装新库时会对此进行处理,但并非总是如此(特别是当您使用sudo ldconfig 安装库时)。

如果输出为空

cmake

请设置默认路径

$ echo $LD_LIBRARY_PATH

答案 3 :(得分:4)

在使用超级计算机时,我在运行时收到此错误:

module load python/3.4.0
screen
python

要解决错误,我只需要在屏幕终端重新加载模块:

module load python/3.4.0
python