C語言學習筆記 動態庫和靜態庫的使用

2022-06-25 21:24:11 字數 1097 閱讀 5557

(1)每個 c 語言原始檔被編譯後生成目標檔案,這些目標檔案最終要被鏈結在一起生成可執

行檔案。 

(2)鏈結器的主要作用是把各個模組之間相互引用的部分處理好,使得各個模組之間能夠正

確的銜接。 

由鏈結器在鏈結時將庫的內容直接加入到可執行程式中

①編譯靜態庫原始碼:gcc –c lib.c –o lib.o

②生成靜態庫檔案:ar –q lib.a lib.o //將 lib.o 與其他檔案打包到 lib.a 中

③使用靜態庫編譯:gcc main.c lib.a –o main.out

可執行程式在執行時才動態載入庫進行鏈結 ,庫的內容不會進入可執行程式當中

①編譯動態庫原始碼:gcc –shared dlib.c –o dlib.so

②使用動態庫編譯:gcc main.c -ldl –o main.out

為了使程式方便擴充套件,具備通用性,可以採用外掛程式形式。採用非同步事件驅動模型,保證主程式邏輯不變,將各個業務已動態鏈結庫的形式載入進來,這就是所謂的外掛程式。linux提供了載入和處理動態鏈結庫的系統呼叫,非常方便。 

①開啟動態庫:dlopen

③關閉動態庫:dlclose

dlib.c 庫 

char*name()

int add(int a, int

b)

test.c

#include #include 

intmain()

//關閉動態庫

dlclose(pdlib);

}else

return0;

}

gcc -shared dlib.c -o dlib.so

gcc test.c -o test.o -ldl

動態庫和靜態庫

本文主要解決以下幾個問題 1 為什麼要使用庫?2 庫的分類 3 建立自己的庫 或許大家對自己初學linux時的情形仍記憶尤新吧。如果沒有乙個能較好的解決依賴關係的包管理器,在linux下安裝軟體將是一件及其痛苦的工作。你裝a包時,可能會提示你要先裝b包,當你費盡心力找到b包時,可能又會提示你要先安裝...

動態庫和靜態庫

先抄一段 windows下的動態庫和靜態庫區別解釋,其實linux下意義一樣的,不過字尾名有些區別 靜態庫 在編譯的時候載入生成目標檔案,在執行時不用載入庫,在執行時對庫沒有依賴性。動態庫 在目標檔案執行時載入,手動載入,且對庫有依賴性。兩者區別 一,靜態庫的使用需要 1 包含乙個對應的標頭檔案告知...

動態庫和靜態庫

簡單的說,使用動態庫就是在鏈結的時候,不會將動態庫的 鏈結到可執行檔案中,而是採用symbol的方式。使用靜態庫,生成可執行檔案的時候,會將靜態庫的 鏈結到可執行檔案中。這樣,動態庫體積會很小,並且可以,依賴於更新的動態庫,但是,缺點是不穩定。靜態庫會更加穩定,但是體積會很大。靜態庫 就是多個目標檔...