linux動態(tài)鏈接庫 linux靜態(tài)庫和共享庫的區(qū)別?
linux靜態(tài)庫和共享庫的區(qū)別?動態(tài)鏈接庫和靜態(tài)鏈接庫通常編譯為集成一系列接口(函數(shù))。程序源代碼編譯后,由編譯器編譯并通過鏈接器與這些庫鏈接。動態(tài)鏈接庫和靜態(tài)鏈接庫的區(qū)別在于,當(dāng)鏈接器鏈接時,靜態(tài)鏈
linux靜態(tài)庫和共享庫的區(qū)別?
動態(tài)鏈接庫和靜態(tài)鏈接庫通常編譯為集成一系列接口(函數(shù))。程序源代碼編譯后,由編譯器編譯并通過鏈接器與這些庫鏈接。動態(tài)鏈接庫和靜態(tài)鏈接庫的區(qū)別在于,當(dāng)鏈接器鏈接時,靜態(tài)鏈接庫會直接編譯到程序中,而動態(tài)鏈接庫不會。我們將在這里討論這些鏈接庫稱為依賴(動態(tài)庫和靜態(tài)庫)。程序的運(yùn)行需要這些依賴關(guān)系。靜態(tài)鏈接后,程序本身包含依賴項(xiàng),而動態(tài)鏈接后的程序本身不包含依賴項(xiàng)。這些依賴關(guān)系需要執(zhí)行者自己將它們安裝到操作系統(tǒng)(動態(tài)庫和運(yùn)行庫)中。當(dāng)程序運(yùn)行時,它將動態(tài)加載這些庫靜態(tài)庫的一般后綴是。A.由于靜態(tài)鏈接將庫直接編譯到程序中,因此靜態(tài)編譯的程序比動態(tài)鏈接的程序大。這是因?yàn)殪o態(tài)鏈接會將庫編譯成程序,所以占用空間會很大。因此,靜態(tài)庫不易維護(hù)和更新,如果在需要更新時鏈接庫中出現(xiàn)實(shí)現(xiàn)錯誤,則需要更新整個程序,因?yàn)殪o態(tài)庫是編譯到程序中的,而動態(tài)庫則不是。因?yàn)閯討B(tài)庫是在程序運(yùn)行時動態(tài)加載的,所以我們只需要更新動態(tài)庫,而不需要更新依賴于動態(tài)庫的所有程序(軟件)。另一方面,許多程序開發(fā)將使用相同的鏈接庫,即許多程序(軟件)將具有相同的依賴關(guān)系。如果所有這些依賴項(xiàng)都是靜態(tài)編譯的,將導(dǎo)致存儲資源過多和資源浪費(fèi)。通過使用動態(tài)庫,這些程序(軟件)可以共享一個鏈接庫,而不必為每個程序帶來一個鏈接庫,從而大大減少存儲資源空間
==查看您的創(chuàng)建共享庫命令-soname-利比。蘇. 1這是共享庫的名稱利比。蘇1啊!--庫=利比。蘇.1(libc6)=>/usr/lib/--庫=伊比。蘇. 1此語句的含義如下:有一個名為libc6的庫,名為利比。蘇. 1,文件放在/usr/lib/-soname中,后跟庫的名稱。除非你改變主意。所以強(qiáng)制文件,它不會改變。-后面跟著生成的文件名,會變的!