動態庫與靜態庫

2022-03-12 07:37:42 字數 759 閱讀 4327

動態鏈結庫英文為dll,是dynamic link library 的縮寫形式,dll是乙個包含可由多個程式同時使用的**和資料的庫,dll不是可執行檔案。動態鏈結提供了一種方法,使程序可以呼叫不屬於其可執行**的函式。函式的可執行**位於乙個 dll 中,該 dll 包含乙個或多個已被編譯、鏈結並與使用它們的程序分開儲存的函式。dll 還有助於共享資料和資源。多個應用程式可同時訪問記憶體中單個dll 副本的內容。dll 是乙個包含可由多個程式同時使用的**和資料的庫。

優點:1、擴充套件了應用程式的特性;

2、可以用許多種程式語言來編寫;

3、簡化了軟體專案的管理;

4、有助於節省記憶體;

5、有助於資源共享;

6、有助於應用程式的本地化;

7、有助於解決平台差異;

8、可以用於一些特殊的目的。windows使得某些特性只能為dll所用。

程式編譯一般需經預處理、編譯、彙編和鏈結幾個步驟。在我們的應用中,有一些公共**是需要反覆使用,就把這些**編譯為「庫」檔案;在鏈結步驟中,聯結器將從庫檔案取得所需的**,複製到生成的可執行檔案中。這種庫稱為靜態庫,其特點是可執行檔案中包含了庫**的乙份完整拷貝;缺點就是被多次使用就會有多份冗餘拷貝。

靜態庫和動態庫是兩種共享程式**的方式,它們的區別是:靜態庫在程式的鏈結階段被複製到了程式中,和程式執行的時候沒有關係;動態庫在鏈結階段沒有被復 製到程式中,而是程式在執行時由系統動態載入到記憶體中供程式呼叫。使用動態庫的優點是系統只需載入一次動態庫,不同的程式可以得到記憶體中相同的動態庫的復 本,因此節省了很多記憶體。

靜態庫與動態庫

linux下靜態庫 a 的例子 mylib.h 位於include資料夾下 ifndef mylib h define mylib h int add int a,int b endif mylib.cpp 位於lib資料夾中 include mylib.h int add int a,int b ...

靜態庫與動態庫

庫本質上是一種可執行的二進位制 可以被作業系統載入 linux和windows的庫是不相容的 庫可以分為靜態塊和動態庫,二者的不同點在於 被載入的時刻不同。靜態庫 在程式編譯時會被連線到目標 中,程式執行時不再需要改靜態庫,體積較大,一般應用與移植過程中在宿主機上編譯的 靜態庫檔名的命名規範是以li...

靜態庫與動態庫

1.靜態庫 工程在呼叫靜態庫時,複製靜態庫,源 加長,不節省程式空間。字尾名.a 優點 程式設計後不需要再依賴庫 以空間換時間 建立靜態庫 gcc c 原始檔.c ar rcs rcu 靜態庫名 目標檔案1 目標檔案2 rc 靜態庫不存在,就建立該庫檔案 s 更新靜態庫 使用 gcc o file ...