首頁  >  文章  >  動態函式庫和靜態函式庫的差別是什麼

動態函式庫和靜態函式庫的差別是什麼

青灯夜游
青灯夜游原創
2021-07-23 13:37:1939535瀏覽

區別:1、靜態函式庫的副檔名一般為「.a」或「.lib」;動態函式庫的副檔名一般為「.so」或「.dll」。 2.靜態函式庫在編譯時會直接整合到目標程式中,編譯成功的可執行檔可獨立運作;動態函式庫在編譯時不會放到連線的目標程式中,即可執行檔無法單獨執行。

動態函式庫和靜態函式庫的差別是什麼

本教學操作環境:windows10系統、Dell G3電腦。

靜態函式庫和動態函式庫最本質的差異就是:該函式庫是否被編譯進目標(程式)內部

靜態(函數)函式庫

一般副檔名為(.a.lib),這類的函數函式庫通常副檔名為libxxx.axxx.lib

這類函式庫在編譯的時候會直接整合到目標程式中,所以利用靜態函式庫編譯成的檔案會比較大,這類函數函式庫最大的優點就是編譯成功的可執行檔可以獨立運行,而不再需要向外部要求讀取函數庫的內容;但是從升級難度來看明顯沒有優勢,如果函數庫更新,需要重新編譯。

動態函數函式庫

動態函式庫的副檔名一般為(.so.dll),這類別函數庫通常名為libxxx.soxxx.dll

與靜態函式庫被整個捕捉到程式中不同,動態函式庫在編譯的時候,在程式裡只有一個「指向」的位置而已,也就是說當可執行檔需要使用到函式庫的機制時,程式才會去讀取函數庫來使用;也就是說可執行檔無法單獨運作。這樣從產品功能升級角度方便升級,只要取代對應動態函式庫即可,不必重新編譯整個執行檔。

綜上,不能看出:

從產品化的角度,發布的演算法庫或功能庫盡量使動態函式庫,這樣方便更新和升級,不必重新編譯整個可執行文件,只需新版本動態庫替換掉舊動態庫即可。

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

更多相關知識,請造訪常見問題欄位!

以上是動態函式庫和靜態函式庫的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn