linux 製作靜態庫檔案 a

2021-06-21 03:41:53 字數 1296 閱讀 8034

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 使...