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