2010-01-31 15 views
48

Spotkałem bibliotekę udziałów, która nie została znaleziona w węźle głównym klastra z latarką. Zbudowałem bibliotekę, a także określiłem poprawną ścieżkę biblioteki podczas kompilowania mojego własnego programu "absurdalności" przez g ++. Wydaje mi się to dziwne. Dowolny pomysł? Dziękuję i pozdrawiam!nie można otworzyć pliku udostępnionego obiektu: brak takiego pliku lub katalogu

[[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 

Odpowiedz

65

Twój LD_LIBRARY_PATH nie zawiera ścieżkę do libsvmlight.so.

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

Dzięki, Maurits. Ale to dziwne, że nie działa. Przepraszam, zapomniałem dodać to do wpisu, ale teraz zrobiłem to. – Tim

+0

OK, teraz działa. Nie pewny dlaczego. Być może system plików klastra ma pewien problem. – Tim

+0

Świetnie, że to był problem dla mnie. –

79

Skopiowane z moją odpowiedź tutaj: https://stackoverflow.com/a/9368199/485088

Run ldconfig jako root, aby zaktualizować cache - jeśli to nie pomoże, należy dodać ścieżkę do pliku ld.so.conf (wystarczy wpisać we własnej linii) lub jeszcze lepiej, dodaj wpis do nowego pliku (łatwiejszy do usunięcia) w katalogu ld.so.conf.d.

+17

działająca ldconfig rozwiązała podobny problem dla mnie ... – xmoex

+0

'sudo ldconfig' rozwiązał problem, dziękuję – Mis94

4

Kiedy pracuje nad superkomputerem, dostałam ten błąd, gdy wpadłem:

module load python/3.4.0 
screen 
python 

Aby rozwiązać ten problem, ja po prostu potrzebne, aby przeładować moduł w terminalu ekran:

module load python/3.4.0 
python 
5
sudo ldconfig 

ldconfig tworzy niezbędne linki i pamięć podręczną do najnowszych udostępnionych bibliotek und w katalogach podanych w linii poleceń, w pliku /etc/ld.so.conf oraz w zaufanych katalogach (/ lib i/usr/lib).

Generalnie menedżer pakietów dba o to podczas instalowania nowej biblioteki, ale nie zawsze (szczególnie po zainstalowaniu biblioteki z cmake).

A jeśli wyjście jest pusty

$ echo $LD_LIBRARY_PATH 

Proszę ustawić domyślną ścieżkę

$ LD_LIBRARY_PATH=/usr/local/lib 
Powiązane problemy