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