查ICP網(wǎng):全新的綜合網(wǎng)站備案信息查詢網(wǎng)
Copyright ? 2008-2028 www.mshuangcha.com [ 查icp] All Rights Reserved.
動態(tài)庫和靜態(tài)庫的區(qū)別有哪些?靜態(tài)庫和動態(tài)庫最本質(zhì)的區(qū)別就是:該庫是否被編譯進目標(程序)內(nèi)部。
靜態(tài)(函數(shù))庫
一般擴展名為(.a或.lib),這類的函數(shù)庫通常擴展名為libxxx.a或xxx.lib 。
這類庫在編譯的時候會直接整合到目標程序中,所以利用靜態(tài)函數(shù)庫編譯成的文件會比較大,這類函數(shù)庫最大的優(yōu)點就是編譯成功的可執(zhí)行文件可以獨立運行,而不再需要向外部要求讀取函數(shù)庫的內(nèi)容;但是從升級難易度來看明顯沒有優(yōu)勢,如果函數(shù)庫更新,需要重新編譯。
動態(tài)函數(shù)庫
動態(tài)函數(shù)庫的擴展名一般為(.so或.dll),這類函數(shù)庫通常名為libxxx.so或xxx.dll 。
與靜態(tài)函數(shù)庫被整個捕捉到程序中不同,動態(tài)函數(shù)庫在編譯的時候,在程序里只有一個“指向”的位置而已,也就是說當可執(zhí)行文件需要使用到函數(shù)庫的機制時,程序才會去讀取函數(shù)庫來使用;也就是說可執(zhí)行文件無法單獨運行。這樣從產(chǎn)品功能升級角度方便升級,只要替換對應動態(tài)庫即可,不必重新編譯整個可執(zhí)行文件。
綜上,不能看出:
從產(chǎn)品化的角度,發(fā)布的算法庫或功能庫盡量使動態(tài)庫,這樣方便更新和升級,不必重新編譯整個可執(zhí)行文件,只需新版本動態(tài)庫替換掉舊動態(tài)庫即可。
從函數(shù)庫集成的角度,若要將發(fā)布的所有子庫(不止一個)集成為一個動態(tài)庫向外提供接口,那么就需要將所有子庫編譯為靜態(tài)庫,這樣所有子庫就可以全部編譯進目標動態(tài)庫中,由最終的一個集成庫向外提供功能。