2010-01-31 14 views
48

Encontré la biblioteca compartida que no se encuentra en el nodo principal de un clúster con soplete. Construí la biblioteca y también especifiqué la ruta correcta de la biblioteca mientras compilaba mi propio programa "absurdo" por g ++. Entonces me parece extraño. ¿Alguna idea? ¡Gracias y saludos!no se puede abrir el archivo de objeto compartido: Ningún archivo o directorio

[[email protected] 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 

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

[[email protected] 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 

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

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

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

Respuesta

65

Su LD_LIBRARY_PATH no incluye la ruta de acceso a libsvmlight.so.

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

Gracias, Maurits. Pero es extraño que no esté funcionando. Lo siento, olvidé agregar eso a la publicación, pero ahora lo he hecho. – Tim

+0

Bien, está funcionando ahora. NO estoy seguro de por qué. Quizás el sistema de archivos del clúster tiene algún problema. – Tim

+0

Genial, ese fue el problema para mí. –

79

Copiado mi respuesta aquí: https://stackoverflow.com/a/9368199/485088

Run ldconfig como root para actualizar la caché - si es que aún no resuelve el problema, es necesario agregar la ruta al archivo ld.so.conf (sólo tiene que escribir en su propia línea) o mejor aún, agregue la entrada a un nuevo archivo (más fácil de eliminar) en el directorio ld.so.conf.d.

+17

ejecutando ldconfig resolvió un problema similar para mí ... – xmoex

+0

'sudo ldconfig' resolvió el problema, gracias – Mis94

4

Cuando se trabaja en un superordenador, recibí este error cuando me encontré:

module load python/3.4.0 
screen 
python 

Para resolver el error, simplemente necesitaba para recargar el módulo en el terminal de pantalla:

module load python/3.4.0 
python 
5
sudo ldconfig 

ldconfig crea los enlaces necesarios y la memoria caché de las bibliotecas compartidas más recientes de und en los directorios especificados en la línea de comando, en el archivo /etc/ld.so.conf, y en los directorios de confianza (/ lib y/usr/lib).

Generalmente, el administrador de paquetes se ocupa de esto mientras instala la nueva biblioteca, pero no siempre (especialmente cuando instala la biblioteca con cmake).

Y si el resultado de esta está vacía

$ echo $LD_LIBRARY_PATH 

Por favor, establecer la ruta predeterminada

$ LD_LIBRARY_PATH=/usr/local/lib 
Cuestiones relacionadas