Linux C 中動靜態庫的區別與製作

2021-10-25 12:07:31 字數 1180 閱讀 3502

如果把庫比作是放在圖書館中的一本本書那麼

動態庫:只借閱,不賣出

靜態庫:直接賣出

動態庫在原始檔編譯的時候並不會將**資料拷貝進去,只會在程式執行的時候,鏈結完成一部分功能,當動態庫從指定路徑移除,程式無法正常執行,但好處在於使用動態庫的程式體積較小。

靜態庫在原始檔編譯的時候直接將**資料拷進一起編譯,當程式執行的時候不再受靜態庫影響,靜態庫無論消失與否,程式依然正常執行,但代價就是程式體積較大。

動態庫好處在於,更新方便,公升級模組功能時候只要將對應庫公升級即可,而靜態庫需要將整個程式重新編譯。

前置條件:

power.c

int power(int base,unsigned int pow)

swap.c

int swapint(int *a,int*b)

動態庫製作方法:

(1)用gcc將power.c和swap.c兩個檔案編譯成.o檔案,注意加選項-fpic

gcc power.c -o power.o -c -fpic

gcc swap.c -o swap.o -c -fpic

(2)將兩個.o檔案合成.so檔案,注意庫名稱,假如名稱叫yc,必須帶字首lib和字尾.so,即假如我想把新建庫起名叫yc,我就要在製作時候填寫完整名稱libyc.so

gcc -fpic -shared -o libyc.so swap.o power.o
(3)製作完成

靜態庫製作方法:

(1)用gcc將power.c和swap.c兩個檔案編譯成.o檔案

gcc swap.c -o swap.o -c

gcc power.c -o power.o -c

(2)使用ar將兩個.o檔案合成.a檔案,同樣注意庫名稱,假如名稱叫yc,必須帶字首lib和字尾.a,即假如我想把新建庫起名叫yc,我就要在製作時候填寫完整名稱libyc.a

ar rcs libyc.a swap.o power.o
(3)製作完成

關於靜態庫與動態庫 Linux C

靜態庫 首先將原始檔編譯成目標檔案 gcc c a.c b.c 生成靜態庫 ar rc libstatic.a a.o b.o 共享庫 同靜態庫一樣編譯成目標檔案 gcc c a.c b.c 生成共享庫 gcc fpic shared o libshared.so a.o b.o 靜態庫和動態庫都是...

黑白盒測試,動靜態測試的區別與聯絡

黑盒測試 是基於規格說明 需求文件 的測試。測試人員不考慮 不關心軟體內部結構,只關心程式的功能是否符合他的功能說明。又被稱為功能測試 黑盒只是功能測試的一部分2017 7 27 16 50 08 資料驅動測試。白盒測試 基於設計文件 結構 的測試。關注軟體內部結構和程式的設計實現。又稱為結構測試或...

黑白盒測試,動靜態測試的區別與聯絡

黑盒測試,白盒測試的區別 是否可見 也就是你是否要檢視 黑盒測試 是基於規格說明 需求文件 的測試。測試人員不考慮 不關心軟體內部結構,只關心程式的功能是否符合他的功能說明。又被稱為功能測試 黑盒只是功能測試的一部分 資料驅動測試。白盒測試 基於設計文件 結構 的測試。關注軟體內部結構和程式的設計實...