windows上有靜態庫和動態庫之說,且庫的副檔名一般為.dll。在liunx系統中,同樣有靜態庫(*.a)和動態庫(*.so)。
linux生成靜態庫的步驟:
1、概述
靜態庫檔案的副檔名一般為.a,其編寫步驟很簡單。
⑴編寫函式**
⑵編譯生成各目標檔案
⑶用ar檔案對目標檔案歸檔,生成靜態庫檔案。
注意歸檔檔案名必須以lib打頭。
使用要點:
⑴在gcc 的-i引數後加上靜態庫標頭檔案的路徑。
⑵在gcc 的-l引數後加上庫檔案所在目錄
⑶在gcc 的-l引數後加上庫檔名,但是要去掉lib和.a副檔名。比如庫檔名是libtest.a 那麼引數就是 -l test
2、編寫最簡單的靜態庫檔案
編寫如下兩個檔案,注意放在同一目錄中
myalib.h //靜態庫標頭檔案
myalib.c //靜態庫實現檔案
檔案的內容
void test();
檔案的內容
#inlcude void test()
3、製作庫檔案
⑴生成目標檔案
gcc -c myalib.c
執行完後會生成乙個myalib.o檔案
⑵用ar命令歸檔,格式為ar -rc 《生成的檔案檔名》 <.o檔名列表》
再次提醒,歸檔檔案名一定要以lib打頭, .a結尾。
ar -rc libtest.a myalib.o
執行完後會生成乙個libtest.a檔案
4、使用庫檔案
⑴編寫乙個測試程式main.c,內容為
測試靜態庫呼叫的程式
#include "myalib.h" //要把函式的標頭檔案包含進來,否則編譯時會報錯
int main(int argc,char* argv)
⑵編譯目標檔案,注意要把靜態庫標頭檔案的路徑加到-i引數裡面
gcc -i /root/exercise -o main.o -c main.c
現在生成了乙個main.o檔案
⑶生成可執行檔案,注意要把靜態庫檔案的路徑加到-l引數裡面,
把庫檔名(去掉打頭的lib和結尾的.a)加到-l引數後面。如下面所示
gcc -o main -l/root/exercise main.o -ltest
此時就會生成乙個名為main的可執行檔案
靜態庫製作
靜態庫 要被包含到源程式中的庫 優點 執行速度快 缺點 占用系統資源比較多 使用的場合 對時間要求很高的場合 靜態庫的製作 1 把所有的源程式 c檔案 製作成目標檔案 o 檔案 gcc c mul.c o mul.o gcc c sub.c o sub.o gcc c add.c o add.o 2...
Linux下製作動態庫與靜態庫
靜態函式庫 1.這類庫的名字一般是lib a 2.利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目標 中,他的優點就顯而易見了,即編譯後的執行程式不需要外部的函式庫支援,因為所有使用的函式都已經被編譯進可執行檔案了。當然這也會成為他的缺點,因為如果靜態函式庫改變了,那麼你的程...
Linux靜態庫和動態庫的製作
1.什麼是庫檔案?儲存函式和變數 特點 儲存的函式與變數只能使用但不能看到其實現 2.linux庫檔案 靜態庫 在編譯階段載入 將庫檔案的 載入到原始檔 動態庫 在執行時載入 3.生成可執行檔案存在的區別 優缺點 1 使用靜態庫生成的可執行檔案大於動態庫生成的可執行檔案 程式占用的記憶體較多 2 使...