2013-06-14 11 views
6

Używam libevent dla programu, kompiluję mój program na dwóch komputerach A i B, na A wykonanie się powiedzie, ale na BI got następujące błędy:błąd podczas ładowania bibliotek współdzielonych: libevent-1.4.so.2: nie można otworzyć pliku obiektu współdzielonego:

error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory 

FYI:

a i B są w systemie fedora, zarówno a i B, Pobrałem libevent-1.4.14b-stable.tar.gz i zainstalować go przez configure/make/make install.

podniecają

[[email protected] temp]$ uname -r 
    3.6.10-2.fc16.x86_64 
    [[email protected] temp]$ ls -al /usr/local/lib64 | grep libevent 
    [[email protected] temp]$ ls -al /usr/lib64 | grep libevent 
    [[email protected] temp]$ ls -al /usr/lib | grep libevent 
    lrwxrwxrwx 1 root root  32 May 21 00:25 libevent-1.4.so.2 -> /usr/local/lib/libevent-1.4.so.2 
    [[email protected] temp]$ ls -al /usr/local/lib | grep libevent 
    lrwxrwxrwx 1 root root  21 May 21 00:22 libevent-1.4.so.2 -> libevent-1.4.so.2.2.0 
    -rwxr-xr-x 1 root root 435304 May 21 00:22 libevent-1.4.so.2.2.0 
    -rw-r--r-- 1 root root 793178 May 21 00:22 libevent.a 
    lrwxrwxrwx 1 root root  26 May 21 00:22 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.2.0 
    -rwxr-xr-x 1 root root 160352 May 21 00:22 libevent_core-1.4.so.2.2.0 
    -rw-r--r-- 1 root root 269580 May 21 00:22 libevent_core.a 
    -rwxr-xr-x 1 root root 988 May 21 00:22 libevent_core.la 
    lrwxrwxrwx 1 root root  26 May 21 00:22 libevent_core.so -> libevent_core-1.4.so.2.2.0 
    lrwxrwxrwx 1 root root  27 May 21 00:22 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.2.0 
    -rwxr-xr-x 1 root root 342122 May 21 00:22 libevent_extra-1.4.so.2.2.0 
    -rw-r--r-- 1 root root 631804 May 21 00:22 libevent_extra.a 
    -rwxr-xr-x 1 root root 995 May 21 00:22 libevent_extra.la 
    lrwxrwxrwx 1 root root  27 May 21 00:22 libevent_extra.so -> libevent_extra-1.4.so.2.2.0 
    -rwxr-xr-x 1 root root 953 May 21 00:22 libevent.la 
    lrwxrwxrwx 1 root root  21 May 21 00:22 libevent.so -> libevent-1.4.so.2.2.0 

na B:

[email protected] server_agent]# uname -r 
    3.8.5-201.fc18.x86_64 
    [[email protected] server_agent]# ls -al /usr/lib | grep libevent 
    lrwxrwxrwx 1 root root  32 Jun 14 17:09 libevent-1.4.so.2 -> /usr/local/lib/libevent-1.4.so.2 
    [[email protected] server_agent]# ls -al /usr/local/lib | grep libevent 
    lrwxrwxrwx 1 root root  21 Jun 14 16:03 libevent-1.4.so.2 -> libevent-1.4.so.2.2.0 
    -rwxr-xr-x 1 root root 435524 Jun 14 16:03 libevent-1.4.so.2.2.0 
    -rw-r--r-- 1 root root 805650 Jun 14 16:03 libevent.a 
    lrwxrwxrwx 1 root root  26 Jun 14 16:03 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.2.0 
    -rwxr-xr-x 1 root root 164070 Jun 14 16:03 libevent_core-1.4.so.2.2.0 
    -rw-r--r-- 1 root root 270748 Jun 14 16:03 libevent_core.a 
    -rwxr-xr-x 1 root root 994 Jun 14 16:03 libevent_core.la 
    lrwxrwxrwx 1 root root  26 Jun 14 16:03 libevent_core.so -> libevent_core-1.4.so.2.2.0 
    lrwxrwxrwx 1 root root  27 Jun 14 16:03 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.2.0 
    -rwxr-xr-x 1 root root 339502 Jun 14 16:03 libevent_extra-1.4.so.2.2.0 
    -rw-r--r-- 1 root root 642916 Jun 14 16:03 libevent_extra.a 
    -rwxr-xr-x 1 root root 1001 Jun 14 16:03 libevent_extra.la 
    lrwxrwxrwx 1 root root  27 Jun 14 16:03 libevent_extra.so -> libevent_extra-1.4.so.2.2.0 
    -rwxr-xr-x 1 root root 959 Jun 14 16:03 libevent.la 
    lrwxrwxrwx 1 root root  21 Jun 14 16:03 libevent.so -> libevent-1.4.so.2.2.0 
    [[email protected] server_agent]# ls -al /usr/lib64 | grep libevent 
    [[email protected] server_agent]# ls -al /usr/local/lib64 | grep libevent 

dlaczego mój program ten błąd na B i czy są jakieś rozwiązania? dzięki!

Odpowiedz

7

Twój system "A" ma dowiązanie symboliczne od /usr/lib/libevent-1.4.so.2 do /usr/local/lib/libevent-1.4.so.2, ale system "B" nie. Możliwe, że jeśli go stworzysz, wszystko zacznie działać.

Komenda powinna wyglądać następująco.

sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2 

Jako alternatywę można dodać /usr/local/lib do ścieżki biblioteki jako badanie eksportując LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib jako tymczasowy fix na układ „B”.

+0

Iran polecenie "sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2" i otrzymuję dowiązanie symboliczne z/usr/lib/libevent- 1.4.so.2 do /usr/local/lib/libevent-1.4.so.2, problem nadal istnieje – misteryes

+0

, ale działa eksport LD_LIBRARY_PATH. jednak przed eksportowaniem, mam tylko $ LD_LIBRARY_PATH jest pusty, dlaczego? – misteryes

+0

Możliwe, że twój system B ma inną domyślną ścieżkę Ld niż system A. To nie wyjaśniałoby, dlaczego dowiązanie symboliczne nie działa. Diagnozując stamtąd, najlepiej byłoby sprawdzić ustawienia ld.so.conf, aby sprawdzić, które katalogi są sprawdzane pod kątem bibliotek. Jeśli chodzi o LD_LIBRARY_PATH, to jest zupełnie normalne, że jest puste, dodałem odwołanie do istniejącej wartości tylko po to, aby ochronić się przed możliwością, że możesz mieć jeden zestaw w konfiguracji powłoki. – njustn