為了增加**的重用性和可維護性,作業系統一般都會引入庫的概念,庫分為靜態庫和動態庫。
靜態庫在編譯的時候會靜態編譯到程式中,執行的時候不再依賴該庫;
動態庫是將符號表編譯到程式中,但是動態庫中的程式本身沒有被編譯到程式中去,所以使用者程式在執行的時候需要依賴動態庫來完成正確的功能。
linux找不到庫檔案根本原因是linux執行使用者程式的時沒有在指定的目錄中尋找到.so動態庫檔案。
這個問題也有很多解決方法。
安裝庫到系統已有的庫目錄下:
系統預設了一些庫檔案的尋找路徑,比如 /lib/, /lib32/, /lib64/, lib/,lib32/,libx86_64-linux-gnu/。一般還會有 /usr/local/lib等目錄。
這種方式有全域性查詢的特點,缺點就是有的時候不好維護庫的版本。也建議不要隨便安裝庫到這些目錄下,很多時候因為版本的原因容易影響到整個系統的穩定性。
新增程式執行的搜尋路徑:
在程式執行前,先告訴編譯器,如果找不到庫,就在我給的路徑下面找吧。
1). 通過.bashrc 全域性配置:
gedit ~/.bashrc
#------------ 在末尾新增 -------------
export ld_library_path=
$ld_library_path:你的庫目錄
#------------ --------- -------------
source ~/.bashrc
終端配置
export ld_library_path=
$ld_library_path
:$pwd/libs
我推薦用終端配置這種方法,特別是程式在開發階段,而且使用改方法也方便同類系統的移植,當要移植到同類計算機上時,不用再在其他計算機上搭建庫環境了,直接將程式和庫拷貝過去新增路徑便可執行。 linux下找到程式執行的位置
在linux下有時候我們需要找到程式執行位置,總不能一直用find在linux目錄下直接遍歷查詢吧,那樣太慢了。其實有乙個簡單的辦法。如下 1.ps aux grep 8080 找到testhttpserver2.py執行的pid 我們就可以直接看到執行程式的位置了,其實這個proc目錄下的乾貨太多...
在windows上,CMake不能找到頭檔案目錄
在windows上,用cmake編譯libpng,configure提示找不到zlib library zlib include dir。cmake error at c program files cmake share cmake 3.16 modules findpackagehandlest...
linux 不能執行ifconfig
最近在用虛擬機器安裝linux 版本 root localhost network scripts lsb release a lsb version core 3.1 ia32 core 3.1 noarch graphics 3.1 ia32 graphics 3.1 noarch distri...