linux 程式執行不能找到庫檔案

2021-09-25 03:32:28 字數 950 閱讀 5061

為了增加**的重用性和可維護性,作業系統一般都會引入庫的概念,庫分為靜態庫和動態庫。

靜態庫在編譯的時候會靜態編譯到程式中,執行的時候不再依賴該庫;

動態庫是將符號表編譯到程式中,但是動態庫中的程式本身沒有被編譯到程式中去,所以使用者程式在執行的時候需要依賴動態庫來完成正確的功能。

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...