国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

linux編譯時(shí)鏈接靜態(tài)庫 linux動態(tài)庫和靜態(tài)庫的區(qū)別?

linux動態(tài)庫和靜態(tài)庫的區(qū)別?通常編譯動態(tài)鏈接庫和靜態(tài)鏈接庫來集成一系列接口(函數(shù))程序源代碼編譯后,它是由編譯器編譯并通過鏈接器鏈接到這些庫中的動態(tài)鏈接庫和靜態(tài)鏈接庫的區(qū)別是鏈接器鏈接時(shí)靜態(tài)鏈接庫

linux動態(tài)庫和靜態(tài)庫的區(qū)別?

通常編譯動態(tài)鏈接庫和靜態(tài)鏈接庫來集成一系列接口(函數(shù))

程序源代碼編譯后,它是由編譯器編譯并通過鏈接器鏈接到這些庫中的

動態(tài)鏈接庫和靜態(tài)鏈接庫的區(qū)別是鏈接器鏈接時(shí)靜態(tài)鏈接庫會直接編譯到程序中

但是動態(tài)鏈接庫不會被編譯,這些鏈接庫稱為依賴關(guān)系(動態(tài)庫和靜態(tài)庫)

程序的運(yùn)行需要這些依賴關(guān)系。程序靜態(tài)鏈接后,程序本身已包含此依賴項(xiàng)

但動態(tài)鏈接的程序本身不包含此依賴項(xiàng)。這些依賴項(xiàng)需要執(zhí)行器將它們安裝到操作系統(tǒng)中(動態(tài)庫和運(yùn)行時(shí)庫)

這些庫將在程序運(yùn)行時(shí)動態(tài)加載

Linux動態(tài)庫的一般后綴為。所以

靜態(tài)庫的一般后綴是。A

因?yàn)殪o態(tài)鏈接會直接將庫編譯到程序中,靜態(tài)編譯的程序比動態(tài)鏈接的程序大

這是因?yàn)殪o態(tài)鏈接會將鏈接庫編譯到程序中,所以占用的空間會更大

因此,如果有靜態(tài)鏈接庫,靜態(tài)庫不易維護(hù)和更新實(shí)現(xiàn)中的bug,整個(gè)程序需要更新,因?yàn)殪o態(tài)庫被編譯到程序中

而動態(tài)庫沒有這種情況,因?yàn)閯討B(tài)庫是在程序運(yùn)行時(shí)動態(tài)加載的,所以我們只需要更新動態(tài)庫,而不需要更新所有依賴該庫的程序(軟件)

]另一方面,許多程序開發(fā)都會使用相同的方法鏈接庫,也就是說,許多程序(軟件)將具有相同的依賴關(guān)系

如果所有這些依賴關(guān)系都是靜態(tài)編譯的,它會造成存儲資源的過度消耗和資源的浪費(fèi)

并且通過使用動態(tài)庫,這些程序(軟件)可以共享一個(gè)鏈接庫,而每個(gè)程序都沒有鏈接庫,這大大減少了存儲資源的消耗空間

Linux中有兩種函數(shù)庫:靜態(tài)庫共享庫(動態(tài)庫)。靜態(tài)庫的代碼在編譯時(shí)與開發(fā)人員的應(yīng)用程序相連接,動態(tài)庫的實(shí)際程序在運(yùn)行時(shí)加載。由于動態(tài)庫不包含庫函數(shù)的實(shí)現(xiàn)代碼,而只包含對函數(shù)庫的引用,程序代碼規(guī)模相對較小,并且動態(tài)庫的擴(kuò)展由它組成。所以。和版本號,靜態(tài)鏈接庫包括。你可能測試不一樣,實(shí)現(xiàn)代碼,可能不一樣。動態(tài)庫通常做得很好,而且通常比靜態(tài)庫好。當(dāng)然,這些功能已經(jīng)實(shí)現(xiàn)了。我想我不太熟悉的時(shí)候最好用動態(tài)庫。因?yàn)?,如果您的靜態(tài)庫被多次調(diào)用,那么在您調(diào)用的內(nèi)存中會有許多靜態(tài)庫實(shí)現(xiàn)代碼,這些代碼將被重復(fù)并浪費(fèi)內(nèi)存。當(dāng)程序執(zhí)行時(shí),動態(tài)庫調(diào)用。第一步是編輯源文件,測試.htest.cmainc.主要的。C文件包含的主要功能為程序入口;測試。C包含main函數(shù)中所需的函數(shù)。vitest.htest.cmain公司. C步驟2:編譯測試。C轉(zhuǎn)換到目標(biāo)文件中。Gcc測試。C if試驗(yàn)。C是正確的,您將得到目標(biāo)文件測試。第三步:創(chuàng)建靜態(tài)庫。O文件。arrcslibtest.atest測試. o步驟4:在程序中使用靜態(tài)庫。由于gcc-omainmain.c-l.-ltest是靜態(tài)編譯的,因此生成的可執(zhí)行文件可以獨(dú)立于。一個(gè)文件。第五步:實(shí)施。第一步是編輯源文件,測試.htest.cmainc.主要的。C文件包含的主要功能為程序入口;測試。C包含main函數(shù)中所需的函數(shù)。vitest.htest.cmain公司. C步驟2:編譯測試。C轉(zhuǎn)換到目標(biāo)文件中。gcc測試的前兩步。C與創(chuàng)建靜態(tài)庫是一致的。步驟3:從創(chuàng)建動態(tài)庫文件。O文件。gcc共享fPIC-olibtest.sotest公司. o步驟4:使用程序中的動態(tài)庫。Gcc-omainmain.c-l.-ltest當(dāng)靜態(tài)庫與動態(tài)庫同名時(shí),Gcc命令優(yōu)先于動態(tài)庫。第五步:實(shí)施。LD庫路徑=。/main示例5查看靜態(tài)庫中的文件[根@node56lib]#銀幣-tlibhycu.abase64號.c.obinbuf.c.ocache.c.ochunk.c.ocodec公司