靜態庫 a和動態庫 so生成及呼叫

2021-05-27 15:14:27 字數 1243 閱讀 6406

gcc編譯器工具一般位於/usr/bin或者/usr/local/bin目錄,但它會從其它位置執行各種編譯器支援的應用程式,這個位置可能是

/usr/lib/gcc-lib/目錄,gnu c/c++編譯器的各個工具和gnu專用標頭檔案都儲存在這裡。

標頭檔案,一般位於/usr/include,包含標頭檔案編譯:gcc -i/指定路徑/include hellworld.c

庫檔案,一般位於/lib或者/usr/lib,編譯額外目錄的庫檔案:gcc -l/指定目錄 -l庫名  helloworld.c

.a為靜態庫,.so為共享庫(動態庫)

靜態庫的生成及呼叫:(1)首先編寫乙個.c檔案add.c,內容如下:

int add(int x, int y)

首先將其加-c選項編譯為add.o檔案:gcc -c add.c

(2)寫乙個add的標頭檔案add.h,包含add的外部聲名,內容如下:

int add(int, int);

(3)寫乙個主函式,test.c,內容如下:

#include #include "add.h"  //這裡是注意點,不要忘了包含相關函式的標頭檔案。

int main(void)

gcc -c test.c 生成test.o

(4)生成靜態庫

ar crv libadd.a add.o

這樣就生成了libadd.a靜態庫,*.a當然可以包含很多個*.o檔案,這裡方便演示只定了乙個*.o檔案。

(5)(注意*.a檔案不能放*.o前面,這樣子編譯,*.a不一定要遵循命名格式)

或者動態庫的生成及呼叫:

(1)首先編寫乙個.c檔案add.c,內容如下:

int add(int x, int y)

編譯生成*.so動態庫:gcc -fpic -shared libadd.so add.c

(2)寫乙個主函式,test.c,內容如下:

#include //#include "add.h"  //動態庫不需要有.h檔案

int main(void)

也可以指定 -l/root/其它目錄, -ladd 表明載入libadd.a庫))。

生成靜態庫 a檔案和動態庫 so檔案

靜態庫在linux環境中,使用ar命令建立靜態庫檔案.如下是命令的選項 d 從指定的靜態庫檔案中刪除檔案 m 把檔案移動到指定的靜態庫檔案中 p 把靜態庫檔案中指定的檔案輸出到標準輸出 q 快速地把檔案追加到靜態庫檔案中 r 把檔案插入到靜態庫檔案中 t 顯示靜態庫檔案中檔案的列表 x 從靜態庫檔案...

Linux生成動態庫 so與生成靜態庫 a

動態庫共享庫 第一步 通過gcc fpic c 編譯生成.o檔案 gcc fpic c a.c 編譯生成.o檔案 fpic與位置無關 gcc fpic c b.c 生成a.o,b.o編譯檔案。第二步 通過上面已經生成的a.o,b.o檔案生成.so檔案 方法1 gcc shared wl o liba...

靜態庫 a和動態庫 so檔案的生成和使用

本文主要講解了靜態庫和動態庫的生成,以及.o檔案和.so檔案的使用。hello.件 ifndef hello h define hello h void hello const char name endif hello h hello.c include void hello const char...