完美解決 error while loading shared libraries: libXXX :cannot open shared object file: No s...
-
環境: ubuntu 18.04
- 具體案例:
$ ./glcapsviewer ./glcapsviewer: error while loading shared libraries: libGLEW.so.1.13: cannot open shared object file: No such file or directory
-
原因:
缺少libGLEW.so.1.13
-
嘗試方案一:
$sudo apt-cache search libGLEW glew-utils - OpenGL Extension Wrangler - utilities libglew-dev - OpenGL Extension Wrangler - development environment libglew2.0 - OpenGL Extension Wrangler - runtime environment libglewmx-dev - OpenGL Extension Wrangler MX - development environment libglewmx1.13 - OpenGL Extension Wrangler (Multiple Rendering Contexts)
將search到的幾個庫通過apt install 全部安裝,問題仍未解決
-
嘗試方案二:
查詢
/
目錄下,name為libGLEW.so.1.13*
(libGLEW.so.1.13後的*
號是匹配規則,防止檔案實際命名為libGLEW.so.1.13.0
的情況),型別為f
的檔案。如果查詢到檔案,那麼我們可以通過配置環境變數的方式,使執行./glcapsviewer
時找到libGLEW.so.1.13。因為如果庫安裝到/usr/lib
目錄下,系統在執行時會自動查詢此目錄下的檔案,如果沒有安裝到/usr/lib
目錄下,需自己手動配置環境變數
sudo find / -name libGLEW.so.1.13* -type f
查詢後並未發現
libGLEW.so.1.13*
,說明通過方案一,並未安裝我們想要的檔案- 嘗試方案三:
$ dpkg -S libGLEW.so libglew2.0:amd64: /usr/lib/x86_64-linux-gnu/libGLEW.so.2.0 libglew2.0:amd64: /usr/lib/x86_64-linux-gnu/libGLEW.so.2.0.0
查詢到libGLEW.so.2.0, 說明在方案一中我們安裝的是libGLEW.so.2.0而不是libGLEW.so.1.13,那我麼只需找到1.13版自行安裝即可
-
最終解決方案
ofollow,noindex">這裡 下載glew1.13版本的原始檔,自行編譯安裝,結果執行
make
時報錯,提示缺少什麼東西,忘記了,沒記載。
然後還是在這個連線所在的頁面最後,README.txt中寫道,可以使用pre-generated (unsupported) snapshot版本來安裝,點選連線跳轉到下載頁面,找到我們所需要的1.13版本,下載後順利編譯安裝。
驗證是否已安裝libGLEW.so.1.13*
$ sudo find / -name libGLEW.so.1.13* -type f /usr/lib64/libGLEW.so.1.13.0
結果查詢到
libGLEW.so.1.13.0
, 說明我們已正確安裝。此時執行./glcapsviewer
仍然報相同的錯誤,懷疑是環境變數未配置,在~/.profile
中最後一行增加export PATH="/usr/lib64:$PATH"
來配置環境變數。再次執行
./glcapsviewer
還是報相同的錯誤,網上搜索得到答案:將so庫所在的目錄
/usr/lib64
寫入到/etc/ld.so.conf
中,然後執行sudo ldconfig
,至此glcapsviewer可以完美執行!/etc/ld.so.conf
的作用:/etc/ld.so.conf.d/*
目錄下的檔案和/etc/ld.so.conf
記錄了動態連結庫的路徑,系統預設搜尋/lib
和/usr/lib
,在其他路徑下的庫檔案就需在這些檔案中指定。或者,還有個方法,就是設定LD_LIBRARY_PATH
環境變數,新增其他路徑,多個 中間用:分隔開