靜態庫和動態庫

2022-02-13 14:25:08 字數 476 閱讀 2255

靜態庫:

a.c , b.c

gcc a.c -o a.o -c

gcc b.c -o b.o -c

ar crs libx.a a.o b.o

gcc hello.c -o hello -lx

特點:在編譯時,立即將庫中的相關**直接複製到可執行檔案裡,這樣這個檔案以後的執行就不依賴於此靜態庫檔案了,但是增加了每個檔案的尺寸。

動態庫:

a.c ,  b.c

gcc a.c -o a.o -c

gcc b.c -o b.o -c

gcc -shared fpic liby.so a.o b.o

gcc hello.c -o hello -ly

特點:在編譯時,並未將庫中的相關**複製到可執行檔案裡,而只是定位了被引用的相關函式,這個檔案以後的執行必須要此動態庫的支援,優點是節省了大量的儲存空間。

庫(靜態庫和動態庫)

一 靜態庫 以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...