2014-03-02 88 views
1

我想運行一個應用程序,我使用 - 使用glew。 它編譯得很好,但是當我嘗試運行它時,出現錯誤:libGLEW.so.1.9:無法打開共享對象文件。無此文件或目錄。我已經檢查過是否有它,並且它位於usr/lib64中。 我試過其他修補程序在互聯網上,我編輯的/etc/ld.so.conf中這樣:libGLEW.so.1.9:無法打開共享對象文件。沒有這樣的文件或目錄

include /etc/ld.so.conf.d/*.conf /usr/lib64/libGLEW.so.1.9(adding this second path) 

然後跑到ldconfig命令,但終端吐出一大堆莫名其妙的話。

有人可以幫忙嗎? 順便說一句,抱歉關於無信息的標題。

+0

一般來說,這是後話你的操作系統發行版應該照顧的你(如果你使用它的包管理器進行所有安裝)。儘管互聯網上有隨機頁面,但如果您需要手動更改動態鏈接器的配置或更新其緩存,但您沒有手動安裝某些內容,則某些內容會被破壞。 –

+0

另外,這真的是一個系統管理問題,而不是一個編程問題[因此在超級用戶上可能會比堆棧溢出更好],特別是不是bash問題(ld.so附帶glibc,而不是bash)。 –

+0

我不得不手動安裝glew,因爲apt存儲庫只能達到1.6。我需要1.9 –

回答

0

原來這是一個簡單的錯誤。

而不是添加的路徑,具體包括

/usr/lib64/libGLEW.so.1.9 
ld.so.config文件

,我嘗試了包括路徑

/usr/lib64/ 
+0

你不是故意包括最後三個點,是嗎? – user1416227

5

你應該閱讀man ldconfig

DESCRIPTION

 ldconfig creates the necessary links and cache to the most recent 
    shared libraries found in the directories specified on the command 
    line, in the file /etc/ld.so.conf, and in the trusted directories (/lib 
    and /usr/lib). The cache is used by the run-time linker, ld.so or ld- 
    linux.so. ldconfig checks the header and filenames of the libraries it 
    encounters when determining which versions should have their links 
    updated. 

該文件應該是自動生成的。在Gentoo上,它只包含目錄。

$ cat /etc/ld.so.conf 
# ld.so.conf autogenerated by env-update; make all changes to 
# contents of /etc/env.d directory 
/lib64 
/usr/lib64 
/usr/local/lib64 
/lib32 
/usr/lib32 
/usr/local/lib32 
/lib 
/usr/lib 
/usr/local/lib 
include ld.so.conf.d/*.conf 
/usr/lib32/OpenCL/vendors/nvidia 
/usr/lib64/OpenCL/vendors/nvidia 
/usr/lib32/opengl/nvidia/lib 
/usr/lib64/opengl/nvidia/lib 
/usr/lib64/qca2 
/usr/lib64/qt4 
/usr/lib32/qt4 
/usr/lib/qt4 
/usr/lib/postgresql 
/usr/lib64/postgresql 
/usr/lib64/postgresql-9.3/lib64/ 
/usr/games/lib64 
/usr/games/lib32 
/usr/games/lib 

看着/etc/env.d裏......

$ grep LD /etc/env.d/* 
/etc/env.d/00basic:LDPATH='/lib64:/usr/lib64:/usr/local/lib64:/lib32:/usr/lib32:/usr/local/lib32:/lib:/usr/lib:/usr/local/lib' 
/etc/env.d/00glibc:LDPATH="include ld.so.conf.d/*.conf" 
/etc/env.d/03opencl:LDPATH="/usr/lib32/OpenCL/vendors/nvidia:/usr/lib64/OpenCL/vendors/nvidia" 
/etc/env.d/03opengl:LDPATH="/usr/lib32/opengl/nvidia/lib:/usr/lib64/opengl/nvidia/lib" 
/etc/env.d/44qca2:LDPATH="/usr/lib64/qca2" 
/etc/env.d/44qt4:LDPATH="/usr/lib64/qt4:/usr/lib32/qt4:/usr/lib/qt4" 
/etc/env.d/44qt4-emul:LDPATH=/usr/lib32/qt4 
/etc/env.d/50postgresql:LDPATH="/usr/lib/postgresql:/usr/lib64/postgresql:/usr/lib64/postgresql-9.3/lib64/" 
/etc/env.d/90games:LDPATH="/usr/games/lib64:/usr/games/lib32:/usr/games/lib" 

由我所看到的,你應該檢查/etc/ld.so.conf.d/的文件來看,一個複製的文件複製到一個新文件(如glew.conf)中,並修改新文件中的路徑以指向lib文件所在的文件夾。

相關問題