我構建了GLEW(使用make install
)在我正在編寫的一個小測試程序中使用(如果需要,可以找到源碼here)。我跑locate libGLEW.so
只是爲了檢查是否安裝正確的GLEW庫,並得到了以下的輸出:C++程序沒有正確鏈接到.so文件
/usr/lib64/libGLEW.so
/usr/lib64/libGLEW.so.2.0
/usr/lib64/libGLEW.so.2.0.0
這是完全正常的。然後我使用命令編譯它:
g++ main.cpp -o main -lglfw -lGLEW -lGL -lX11 -lpthread -lXi -g
這也沒有發生錯誤。然而,當我試圖執行程序:
./main: error while loading shared libraries: libGLEW.so.2.0: cannot open shared object file: No such file or directory
只是爲了進行仔細的檢查,我跑ldd main | grep "GLEW"
,果然:
libGLEW.so.2.0 => not found
我最初以爲,這可能是與連接有問題不搜索包含庫的目錄。於是我就命令ld --verbose | grep "/usr/lib64"
有爲包含所需目錄SEARCH_DIR:
... SEARCH_DIR("=/usr/lib64"); ...
這是特別令人困惑。我試着編譯-L/usr/lib64
選項,但同樣的錯誤信息仍然存在。我檢查了符號鏈接庫是正確的,他們是:
lrwxrwxrwx 1 root root 16 Jul 15 10:22 libGLEW.so -> libGLEW.so.2.0.0
lrwxrwxrwx 1 root root 16 Jul 15 10:38 libGLEW.so.2.0 -> libGLEW.so.2.0.0
-rw-r--r-- 1 root root 707K Jul 15 10:22 libGLEW.so.2.0.0
我不知道究竟是什麼原因造成的問題,但我開始相信我沒有正確安裝庫。我覺得答案就在我眼前,但我找不到它。
在此先感謝您的幫助。
'uname -a'表示什麼? –
@JohnHinrichsen Linux TRASHTOPB 4.8.0-58-generic#63〜16.04.1-Ubuntu SMP Mon Jun 26 18:08:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux – WickedJet