跳轉到內容

C++ 程式設計/編譯器/連結器/庫/靜態庫和動態庫

來自華夏公益教科書,開放的書籍,為開放的世界

靜態庫和動態庫

[編輯 | 編輯原始碼]
Clipboard

待辦事項
在這裡定義“靜態庫”和“動態庫”以及“靜態二進位制檔案”。


使用靜態二進位制檔案的優勢

  • 簡化程式分發(更少的檔案)。
  • 程式碼簡化(不需要像動態庫那樣進行版本檢查)。
  • 只會編譯使用的程式碼。

使用靜態二進位制檔案的缺點

  • 資源浪費:生成更大的二進位制檔案,因為庫被編譯到可執行檔案中。浪費記憶體,因為庫不能在程序之間共享(在記憶體中)(取決於作業系統)。
  • 程式將不會從庫中的錯誤修復或擴充套件中受益,除非重新編譯。
庫的二進位制/原始碼相容性

如果動態連結到庫的早期版本的程式能夠繼續使用同一庫的其他版本執行,則該庫被稱為二進位制相容。如果程式需要重新編譯才能在每個新版本的庫上執行,則該庫被稱為原始碼相容

生成二進位制相容庫有利於分發,但程式設計師維護起來更困難。如果庫只是原始碼相容,則靜態連結通常被認為是一個更好的解決方案,因為它不會給終端使用者帶來問題。

二進位制相容性節省了大量的麻煩,並且表明該庫已經達到了穩定狀態。它使得在特定平臺上分發軟體變得更容易。如果不確保不同版本之間的二進位制相容性,人們將被迫提供靜態連結的二進位制檔案。

華夏公益教科書