Linux库函数
鏈接方式分為兩種:靜態(tài)鏈接、動態(tài)鏈接。
靜態(tài)鏈接
由鏈接器在鏈接時將庫的內(nèi)容加入到可執(zhí)行程序中。
優(yōu)點:
??對運行環(huán)境的依賴性較小,具有較好的兼容性。
? 程序在運行的時候不需要庫的支持。
缺點:
? 生成的程序比較大,需要更多的系統(tǒng)資源,在裝入內(nèi)存時會消耗更多的時間。
? 庫函數(shù)有了更新,必須重新編譯應(yīng)用程序。
動態(tài)鏈接
鏈接器在鏈接時僅僅建立與所需庫函數(shù)之間的鏈接關(guān)系,在程序運行時才將所需資源調(diào)入可執(zhí)行程序。
優(yōu)點:
? 在需要的時候才調(diào)入對應(yīng)的資源函數(shù)。
? 簡化程序的升級,有著較小的程序體積。
? 實現(xiàn)進程之間的資源共享(避免重復(fù)拷貝)。
缺點:
? 依賴動態(tài)庫,不能獨立運行。
? 動態(tài)庫依賴版本問題嚴重。
??程序在運行的時候需要庫的支持。
靜態(tài)鏈接庫與動態(tài)鏈接庫
??靜態(tài)鏈接庫在Linux中后綴為.a,以lib開頭。如:libtestlib.a
??動態(tài)鏈接庫在Linux中后綴為.so,以lib開頭。如:libtestlib.so
? 動態(tài)編譯:gcc hello.c -o hello
? 靜態(tài)編譯:gcc hello.c -static -o hello
? 使用gcc 源文件名 -o 目標文件名時,系統(tǒng)默認采用動態(tài)鏈接的方式進行編譯程序,若想采用靜態(tài)編譯,加入-static參數(shù)。
? 當靜態(tài)庫與動態(tài)庫重名時,系統(tǒng)會優(yōu)先連接動態(tài)庫,或者可以加入-static指定使用靜態(tài)庫。
轉(zhuǎn)載于:https://www.cnblogs.com/lemongirl/p/7891625.html
總結(jié)
- 上一篇: Linux 自动挂载 和 fstab分区
- 下一篇: 2.Linux技能要求