靜態庫和共享庫的區別


在程式設計環境中,庫是指包含某種預編譯程式碼的實體,這些程式碼可以被重用於任何程式,以實現特定的功能或特性。

現在,根據程式碼的執行和儲存方式,庫被分為兩種型別:靜態庫和共享庫。

以下是靜態庫和共享庫之間的一些重要區別。

序號關鍵點靜態庫共享庫
1定義靜態庫是指所有執行檔案所需的程式碼都包含在一個可執行檔案中,並且該檔案會被編譯器、連結器或繫結器複製到目標應用程式中,生成目標檔案和獨立的可執行檔案。另一方面,共享庫是指目標程式中僅包含庫的地址,而庫的所有函式和程式碼都位於記憶體空間的特定位置,每個程式都可以訪問它們,而無需建立多個副本。
2匯入如上所述,靜態庫在編譯時在呼叫方中解析,並由編譯器、連結器或繫結器複製到目標應用程式中。共享庫由作業系統本身在目標程式執行時匯入。
3大小靜態庫的大小較大,因為外部程式被構建到可執行檔案中。另一方面,共享庫的大小要小得多,因為在執行時記憶體中只保留一個動態庫的副本,否則它的位置是遠端的。
4編譯對於靜態庫,如果對外部檔案進行了任何更改,則需要重新編譯。另一方面,對於共享庫,無需重新編譯可執行檔案。
5效能靜態庫執行時間較長,因為每次執行時都需要載入到記憶體中。而共享庫速度更快,因為共享庫程式碼已在記憶體中。
6相容性在靜態庫中,沒有觀察到相容性問題。另一方面,在共享庫的情況下,存在相容性問題,因為如果庫從系統中刪除,目標程式將無法工作。

更新於: 2020年2月24日

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告