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!
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
, ale działa eksport LD_LIBRARY_PATH. jednak przed eksportowaniem, mam tylko $ LD_LIBRARY_PATH jest pusty, dlaczego? – misteryes
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