linux動態庫引用

2021-10-08 03:50:17 字數 823 閱讀 6646

linux環境中動態庫的搜尋路徑預設是/usr/lib或/lib,在程式執行時需要某個動態庫,才會去預設路徑下尋找動態庫。

當我們自己編譯的動態庫不在預設路徑下,就會產生如下的報錯:

./test.out: error while loading shared libraries: libtest1.so: 

cannot open shared object file: no such file or directory

解決方法一:

將動態庫儲存到預設路徑下,建議少用,系統檔案會雜亂。

(sudo) cp libname.so /usr/lib/
刪除:

(sudo) rm /usr/lib/libname.so
解決方法二:

配置環境變數,將動態庫所在的路徑配置到環境變數

export ld_library_path="/home/pi/lib"

//" "內是編譯的動態庫所在的目錄,可用pwd命令檢視

但是有一點缺陷,該環境變數是臨時的,只針對當前視窗,更換視窗後執行失敗。因此,可以寫乙個指令碼。

//命名start.sh的指令碼,內容為:

export ld_library_path="/home/pi/lib"

./test.out

給指令碼加可執行的許可權:chmod +x start.sh

執行時,./start.sh即可使用

linux 下生成動態庫 so並引用

動態庫的引入及減少了主 檔案的大小,同時生成的動態庫又是動態載入的,只有執行的時候才去載入,linux 下的 動態庫 so 就像windows下的 dll一樣。有關動態庫的概念自行上網搜。一下是建立及引用動態庫 test so.h ifndef test so h define test so h ...

eclipse c c 程式設計引用動態庫(so)

動態庫的引用 右擊專案,選中屬性,在屬性頁中 c c build settings tool settings gcc c compiler command 欄寫上gcc lpthread ltcmrdriver 使用者自定義庫libtcmrdriver.so 同樣在gcc c linker的com...

linux 靜態庫 動態庫

1.概念和區別 靜態庫就是在編譯過程中一些目標檔案的集合。靜態庫在程式鏈結的時候使用,鏈結器會將程式中使用到函式的 從庫檔案中拷貝到應用程式中。一旦鏈結完成,在執行程式的時候就不需要靜態庫了。由於每個使用靜態庫的應用程式都需要拷貝所用函式的 所以靜態鏈結的檔案會比較大。相對於靜態函式庫,動態函式庫在...