linux系統下動態庫的建立

2021-08-20 03:13:08 字數 785 閱讀 8204

需求:以建立乙個加減法功能的動態庫為例。

1、分別建立乙個加減法的庫函式(add.c,sub.c)

int add(int a,int b)

int sub(int a,int b)

2、將庫函式檔案生成目標檔案;

gcc -c sub.c add.c -fpic;==》add.o,sub.o;

3、將目標檔案分裝成庫;

gcc add.o sub.o -o libmath.so -shared;==》libmath.so;

4、建立呼叫函式的原始檔;(cal.c)

#include int main()

5、編譯執行;

靜態庫與動態庫的區別:

1、靜態庫的字尾是.a;冬天庫的字尾是.so;

mv libadd.a ../之後,./a,out是可以執行的;對於動態庫,鏈結器是在呼叫的地方做個標記,呼叫的時候再去動態庫里載入,對應的實驗現象:mv libmath.so ../之後,./a.out是不可以執行的;

3、鏈結動態庫的可執行檔案一般比鏈結靜態庫的可執行檔案要小;

4、預設的鏈結方式是動態鏈結,如果要靜態鏈結的話,加個引數-static.

Linux下建立動態庫

在linux下動態庫檔案字尾為.so,其中so代表 shared object,即共享目標檔案。動態庫的特點就是在系統記憶體中,只會存在動態庫的乙個副本。例如 程式a,b允許時都需要動態庫lib.so的支援。當a程式執行時,由於系統記憶體中沒有發現lib.so庫,所以需要載入lib.so。此時b程式...

linux 下建立靜態庫和動態庫

4.生成庫檔案 編寫函式 編譯生成各目標檔案 用ar檔案對目標檔案歸檔,生成靜態庫檔案。注意歸檔檔案名必須以lib打頭 可檢視庫檔案命名規則 使用要點 在gcc的 i引數後加上靜態庫標頭檔案的路徑。在gcc的 l引數後加上庫檔案所在目錄 在gcc的 l引數後加上庫檔名,但是要去掉lib和.a副檔名。...

linux下建立靜態庫與動態庫

靜態庫 編寫好c原始檔,裡面只有函式的實現。要呼叫的檔案比如是main.c,在檔案裡宣告c原始檔裡的庫函式名。1 首先 gcc c hello.c 生成hello.o 2 ar crs libhello.a hello.o 3 gcc o main main.c l.lhello l後面跟著庫的路徑...