Linux下建立 檢視 提取和修改靜態庫( a)

2021-08-28 07:00:13 字數 2043 閱讀 3384

先說明一點,靜態庫檔案是由多個目標檔案打包而成的,在windows下靜態庫檔案的字尾是.lib,而在linux下靜態庫檔案的字尾是.a(a是archive的縮寫,也就是文件檔案)。

廢話少說,下面直接進入主題。

1.建立兩個c檔案:addition.c 和 multiplication.c

addition.c

1 

2 int addition (int a ,int b)

3

multiplication.c

1 

2 int multiplication

3

2.編譯c檔案得到.o目標檔案

1 $ gcc -c addition.c

2 $ gcc -c multiplication.c

其中選項 -c 是讓gcc只把原始碼編譯成.o檔案。

接著在當前資料夾中就會發現多處了兩個.o檔案

1 $ ls

2 addition.c multiplication.c addition.o multiplication.o

3. 用ar命令來建立靜態庫檔案

1 $ ar cr libarith.a  addition.o multiplication.o
其中cr就是create的意思,這樣就建立了乙個libarith.a的靜態庫檔案。

4.寫乙個c程式來呼叫libarith.a庫

在使用庫檔案之前要先建立乙個標頭檔案 header.h,它包含了庫檔案中實現了函式的宣告。

1 

2 #include3 int addition(int a,int b);

4 int multiplication(int a,int b);

然後建立乙個c程式example.c來呼叫函式

1 // example.c

2 #include "header.h"

3 int main()

4

編譯example.c

1 $ gcc example.c libarith.a -o example
選項 -o 後面的引數是指定編譯器生成的可執行檔名,如果沒有加 -o的話預設生成的可執行檔名是 a.out

執行可以行檔案example

1 $./example

2 addtion result is:3

3 multiplication result is:12

5.檢視庫檔案中的目標檔案

1 $ ar t libarith.a

2 addition.o

3 multiplition.o

如果想檢視庫檔案中包含了哪些函式可以用 nm  libarith.a 檢視,如果要檢視可執行檔案需要呼叫哪些庫可以用 lld example 來檢視。

6.從庫檔案中提取目標檔案

1 $ mkdir file

2 $ cp libarith.a file/

3 $ cd file

4 $ ar x libarith.a

5 $ ls

6 addition.o

7 multiplition.o

7.新增乙個目標檔案到庫檔案中

假設你已經有乙個目標檔案subtraction.o

1 $ ar r libarith.a subtraction.o

2 $ ar t libarith.a

3 addition.o

4 multiplication.o

5 subtraction.o

如果庫檔案中已經存在了subtraction.o檔案,則會用新的來覆蓋原來舊的。

8.刪除庫檔案中指定的目標檔案

1 $ ar d libarith.a addition.o

2 $ ar t libarith.a

3 multiplication.o

4 subtraction.o

linux下檢視和修改檔案時間

一 檢視檔案時間及相關命令 1 stat檢視檔案時間 root web10 stat install.log file install.log size 33386 blocks 80 io block 4096 一般檔案 device fd00h 64768d inode 7692962 link...

linux下檢視和修改檔案時間

一 檢視檔案時間及相關命令 1 stat檢視檔案時間 root web10 stat install.log file install.log size 33386 blocks 80 io block 4096 一般檔案 device fd00h 64768d inode 7692962 link...

linux下 python 版本檢視和修改

1.linux的軟連線存放位置 cd usr bin2.檢視現有python的軟連線指向的版本 ls al python 3.刪除舊的軟連線 rm python4.建立新的軟連線 ln s python3.6 python5.檢視軟連線版本 python v 全部操作都在root使用者下執行 1.安...