靜態庫和動態庫的具體差異

2021-08-19 14:44:33 字數 765 閱讀 4585

靜態函式庫和動態函式庫(linux下字尾名分別是.a和.so)(windows下字尾名分別是.lib和.dll)

庫本質上來說是一種可執行**的二進位制格式,可以被載入記憶體中執行.

靜態函式庫的名字一般是***x.a或***x.lib;利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目標**中,

她的優點很明顯:編譯後的執行程式不需要外部的函式庫支援,因為所有使用的函式都已經被編譯進去了.但這也是她的缺點:如果靜態函式庫發生改變,那麼你的程式必須重新編譯.

動態函式庫的名字一般是***x.so或***x.dll;相對於靜態函式庫,動態函式庫在編譯時並沒有被編譯進目標**,你的程式在執行到相關函式時才呼叫該庫里的相應函式,因此動態函式庫所產生的可執行檔案相對較小.由於函式庫沒有被整合進目標程式,而是程式執行時動態的申請並呼叫,所以程式的執行環境中必須提供相應的庫.動態函式庫的改變並不影響你的程式執行,所以動態函式庫公升級比較方便.

使用靜態庫的好處:

1-模組化,分工合作

2-可以重用**(一段**中多次用到同乙個函式)

3-可以避免函式少量的改動導致大量的重複編譯連線

使用動態庫的好處:

1-可以將最終可執行檔案體積縮小

2-多個應用程式共享記憶體中的同乙份庫檔案,節省資源

3-可以不重新編譯連線可執行程式的前提下,更新動態庫達到更新應用程式的目的

從1可以看出,整個應用程式分模組,團隊合作,進行分工,影響較小.從2 可以看出,動態庫又叫共享庫.

(**於網路,持續更新......)

庫(靜態庫和動態庫)

一 靜態庫 以c語言的形式生成庫 h中extern c int add int int extern c int sub int int 二.測試靜態庫 將.h和.lib放入 h ifdef cplusplus c 程式設計師用c的方式開啟 extern c int add int int exte...

靜態庫和動態庫

一。靜態庫 靜態庫的優點在於使用簡單,編譯快速。靜態庫在應用程式生成時,已經編譯成為可重定位的目標檔案,因此可以不必再編譯,節省編譯時間,以最短的時間生成可執行程式。步奏 a。建立靜態庫 1 在編輯器中編輯其靜態庫函式 static lib.c 2 在shell中編譯該原始檔,生成乙個可重定位的目標...

靜態庫和動態庫

靜態庫 lib 中相當於存放了所有的源 包括他引入的其他靜態lib檔案.其實是所有cpp編譯後對應的.obj檔案的打包 所以靜態lib都比較大。動態庫dll也有lib但是這個lib,只是用來幫助程式在鏈結時定位dll中的函式的位址的。所以會在exe載入時才重定位函式的位址。重定位就是根據鏈結的這個l...