需求:以建立乙個加減法功能的動態庫為例。
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後面跟著庫的路徑...