先說明一點,靜態庫文件是由多個目標文件打包而成的,在windows下靜態庫文件的後綴是.lib,而在linux下靜態庫文件的後綴是.a(a是archive的縮寫,也就是文檔文件)。
廢話少說,下面直接進入主題。
addition ( a , result=a+ }
multiplication.c
result=a* }
$ gcc - $ gcc -c multiplication.c
其中選項 -c 是讓gcc只把源碼編譯成.o文件。
接著在當前文件夾中就會發現多處了兩個.o文件
addition.c multiplication.c addition.o multiplication.o
$ ar cr libarith.a addition.o multiplication.o
其中cr就是create的意思,這樣就創建了一個libarith.a的靜態庫文件。
在使用庫文件之前要先建立一個頭文件 header.h,它包含了庫文件中實現了函數的聲明。
#include<stdio.h> addition( a, multiplication( a, b);
然後創建一個c程序example.c來調用函數
#include result=addition(, printf( result=multiplition(, printf( }
編譯example.c
$ gcc example.c libarith.a -o example
選項 -o 後面的參數是指定編譯器生成的可執行文件名,如果沒有加 -o的話默認生成的可執行文件名是 a.out
運行可以行文件example
$./ addtion result : multiplication result :
multiplition.o
如果想查看庫文件中包含了哪些函數可以用 nm libarith.a 查看,如果要查看可執行文件需要調用哪些庫可以用 lld example 來查看。
$ cp libarith.a file/ multiplition.o
假設你已經有一個目標文件subtraction.o
subtraction.o
如果庫文件中已經存在了subtraction.o文件,則會用新的來覆蓋原來舊的。
subtraction.o
參考來源:http://www.thegeekstuff.com/2010/08/ar-command-examples/