2013-05-20 27 views
0

我使用了libevent在我的源代碼,編譯程序之後,我運行它,我得到了以下錯誤:錯誤而載入共享庫,安裝在錯位的`.so`文件/ usr/lib目錄

./my_program: error while loading shared libraries: libevent-1.4.so.2: cannot open shared 

以前我對如何安裝libevent和安裝類似libverto-libevent-0.2.5-1.fc16.x86_64.rpm的東西感到茫然。無論如何,我終於彙編和./configure, make and make install安裝libevent的源代碼,但它被安裝在/usr/lib/usr/lib64由以前的殘留.so文件所佔據,如下:

[[email protected] lib]$ ls /usr/lib64|grep "libevent" 
    libevent-2.0.so.5 
    libevent-2.0.so.5.0.1 
    libevent_core-2.0.so.5 
    libevent_core-2.0.so.5.0.1 
    libevent_extra-2.0.so.5 
    libevent_extra-2.0.so.5.0.1 
    libevent_openssl-2.0.so.5 
    libevent_openssl-2.0.so.5.0.1 
    libevent_pthreads-2.0.so.5 
    libevent_pthreads-2.0.so.5.0.1 
    libeventviews.so.4 
    libeventviews.so.4.8.0 

    [[email protected] lib]$ ls /usr/lib|grep "libevent" 
    libevent-1.4.so.2 
    libevent-1.4.so.2.2.0 
    libevent.a 
    libevent_core-1.4.so.2 
    libevent_core-1.4.so.2.2.0 
    libevent_core.a 
    libevent_core.la 
    libevent_core.so 
    libevent_extra-1.4.so.2 
    libevent_extra-1.4.so.2.2.0 
    libevent_extra.a 
    libevent_extra.la 
    libevent_extra.so 
    libevent.la 
    libevent.so 
    [[email protected] lib]$ 

我能做些什麼,所以我可以運行。/my_program成功? 我的系統是fedora 16,我想鏈接到libevent-1.4.so 謝謝!

BTW:

我試圖轉-e所有以前錯誤地安裝的rpm包,還有一些「包未安裝」的提示,和我

[[email protected] lib]$ ls /usr/lib64|grep "libevent" 
    lrwxrwxrwx 1 root root  21 Apr 3 2012 libevent-2.0.so.5 -> libevent-2.0.so.5.0.1 
    -rwxr-xr-x 1 root root 280720 Feb 9 2011 libevent-2.0.so.5.0.1 
    lrwxrwxrwx 1 root root  26 Apr 3 2012 libevent_core-2.0.so.5 -> libevent_core-2.0.so.5.0.1 
    -rwxr-xr-x 1 root root 165760 Feb 9 2011 libevent_core-2.0.so.5.0.1 
    lrwxrwxrwx 1 root root  27 Apr 3 2012 libevent_extra-2.0.so.5 -> libevent_extra-2.0.so.5.0.1 
    -rwxr-xr-x 1 root root 127400 Feb 9 2011 libevent_extra-2.0.so.5.0.1 
    lrwxrwxrwx 1 root root  29 Apr 3 2012 libevent_openssl-2.0.so.5 -> libevent_openssl-2.0.so.5.0.1 
    -rwxr-xr-x 1 root root 21352 Feb 9 2011 libevent_openssl-2.0.so.5.0.1 
    lrwxrwxrwx 1 root root  30 Apr 3 2012 libevent_pthreads-2.0.so.5 -> libevent_pthreads-2.0.so.5.0.1 
    -rwxr-xr-x 1 root root  6992 Feb 9 2011 libevent_pthreads-2.0.so.5.0.1 
    lrwxrwxrwx 1 root root  22 Jul 31 2012 libeventviews.so.4 -> libeventviews.so.4.8.0 
    -rwxr-xr-x 1 root root 974656 Jul 9 2012 libeventviews.so.4.8.0 
+0

難道你不能只卸載你不想要的RPM嗎? –

+0

您是否嘗試使用'export'將路徑添加到'$ LD_LIBRARY_PATH'? –

+0

這是什麼操作系統,你想鏈接到哪個版本的libevent? –

回答

1

對於安裝庫從源代碼你必須運行ldconfig,packagemanagers爲你做這個。但是,如果你從源代碼編譯庫,你必須運行

./configure 
make 
make install 

而且

ldconfig 

兩者make installldconfig應作爲超級用戶

man ldconfig 

可以告訴你的方式更關於緩存和更新庫,然後我可以。

+0

順便說一句,我可以刪除/ libe/lib64中與libevent有關的所有'.so'文件嗎?因爲我只需要libevent-1.4.so – user138126

+0

我相信ldconfig會告訴鏈接器在哪裏可以找到這些庫並做一些其他的事情,但是看看manpages。我被你的庫結束於/ usr/lib這個事實所迷惑,除非你在配置/安裝時對前綴變量指定了一些奇怪的東西,否則我會希望它們在/ usr/local/lib中。 – hetepeperfan

+0

啊,我做了這樣的:./configure -prefix =/usr,我也想用'gcc -m32 -o'編譯我的程序,我的機器是x86_64。我應該安裝什麼libevent庫。並且'/ usr/lib'會影響libevent庫的32位版本? – user138126

0

不能刪除libevent 2.0嗎?

你可以在rpm方法中使用rpm -e。

或者,在你的Makefile中你可以鏈接libevent-2.0而不是libevent-1.4。

+0

這不是一個問題,而是一個建議 – freedoo

相關問題