溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

動態(tài)庫和靜態(tài)庫有什么區(qū)別

發(fā)布時間:2021-07-23 17:13:08 來源:億速云 閱讀:163 作者:chen 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹“動態(tài)庫和靜態(tài)庫有什么區(qū)別”,在日常操作中,相信很多人在動態(tài)庫和靜態(tài)庫有什么區(qū)別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”動態(tài)庫和靜態(tài)庫有什么區(qū)別”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

區(qū)別:1、靜態(tài)庫的擴展名一般為“.a”或“.lib”;動態(tài)庫的擴展名一般為“.so”或“.dll”。2、靜態(tài)庫在編譯時會直接整合到目標程序中,編譯成功的可執(zhí)行文件可獨立運行;動態(tài)庫在編譯時不會放到連接的目標程序中,即可執(zhí)行文件無法單獨運行。

本教程操作環(huán)境:windows10系統(tǒng)、Dell G3電腦。

靜態(tài)庫和動態(tài)庫最本質(zhì)的區(qū)別就是:該庫是否被編譯進目標(程序)內(nèi)部

靜態(tài)(函數(shù))庫

一般擴展名為(.a.lib),這類的函數(shù)庫通常擴展名為libxxx.axxx.lib 。

這類庫在編譯的時候會直接整合到目標程序中,所以利用靜態(tài)函數(shù)庫編譯成的文件會比較大,這類函數(shù)庫最大的優(yōu)點就是編譯成功的可執(zhí)行文件可以獨立運行,而不再需要向外部要求讀取函數(shù)庫的內(nèi)容;但是從升級難易度來看明顯沒有優(yōu)勢,如果函數(shù)庫更新,需要重新編譯。

動態(tài)函數(shù)庫

動態(tài)函數(shù)庫的擴展名一般為(.so.dll),這類函數(shù)庫通常名為libxxx.soxxx.dll

與靜態(tài)函數(shù)庫被整個捕捉到程序中不同,動態(tài)函數(shù)庫在編譯的時候,在程序里只有一個“指向”的位置而已,也就是說當可執(zhí)行文件需要使用到函數(shù)庫的機制時,程序才會去讀取函數(shù)庫來使用;也就是說可執(zhí)行文件無法單獨運行。這樣從產(chǎn)品功能升級角度方便升級,只要替換對應(yīng)動態(tài)庫即可,不必重新編譯整個可執(zhí)行文件。

綜上,不能看出:

從產(chǎn)品化的角度,發(fā)布的算法庫或功能庫盡量使動態(tài)庫,這樣方便更新和升級,不必重新編譯整個可執(zhí)行文件,只需新版本動態(tài)庫替換掉舊動態(tài)庫即可。

從函數(shù)庫集成的角度,若要將發(fā)布的所有子庫(不止一個)集成為一個動態(tài)庫向外提供接口,那么就需要將所有子庫編譯為靜態(tài)庫,這樣所有子庫就可以全部編譯進目標動態(tài)庫中,由最終的一個集成庫向外提供功能。

到此,關(guān)于“動態(tài)庫和靜態(tài)庫有什么區(qū)別”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI