靜態庫和動態庫

2021-10-20 09:26:39 字數 699 閱讀 2573

生成.o檔案

使用ar工具製作靜態庫

ar rcs libmylib.a file1.

0//實際名字就是mylib

gcc xx.c libmylib.a -o xx.out
​ 動態函式庫的副檔名一般為(.so或.dll),這類函式庫通常名為lib***.so或***.dll 。

​ 同靜態函式庫被整個捕捉到程式中不同,動態函式庫在編譯的時候,在程式裡只有乙個「指向」的位置而已,也就是說當可執行檔案需要使用到函式庫的機制時,程式才會去讀取函式庫來使用;也就是說可執行檔案無法單獨執行。這樣從產品功能公升級角度方便公升級,只要替換對應動態庫即可,不必重新編譯整個可執行檔案。

將.c檔案生成.o檔案,生成與位置無關的** -fpic

gcc -c add.c -o add.o -fpic

使用gcc -shared 製作動態庫

gcc -shared lib庫名.so add.o sub.o div.o

編譯可執行程式時,指定所使用的動態庫

gcc test.c -o a.out -l庫名 -l.

/lib -i .

/inc

//inc為頭檔案目錄

執行程式

庫(靜態庫和動態庫)

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