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