ar

Linux的命令

ar,Linux系統的一個備份壓縮命令,用於創建、修改備存文件(archive),或從備存文件中提取成員文件。ar命令最常見的用法是將目標文件打包為靜態鏈接庫。

描述


ar命令是Linux的一個備份壓縮命令,可以創建、修改備存文件(archive),或從備存文件中抽取成員文件。備存文件以一定的結構打包一個至多個其它文件(即成員文件),且成員文件的內容、模式、時間戳等信息將被保存在備存文件中。
常見的應用是,使用ar命令將多個目標文件(*.o)打包為靜態鏈接庫文件(*.a)。

語法


命令格式

ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin ] [member-name] [count] archive-file file...
ar -M []

參數

·指令參數
-d 刪除備存文件中的成員文件。
-m 變更成員文件在備存文件中的次序。
-p 顯示備存文件中的成員文件內容。
-q 將成員文件添加到備存文件末端。
-r 將文件插入備存文件中。
-s 等價於運行ranlib。
-t 顯示備存文件中所包含的文件。
-x 自備存文件中取出成員文件。
·選項參數
a<成員文件> 將文件插入備存文件中指定的成員文件之後。
b<成員文件> 將文件插入備存文件中指定的成員文件之前。
c 建立備存文件。
f 為避免過長的文件名不兼容於其他系統的ar指令指令,因此可利用此參數,截掉要放入備存文件中過長的成員文件名稱。
i<成員文件> 將文件插入備存文件中指定的成員文件之前。
o 保留備存文件中文件的日期。
s 若備存文件中包含了對象模式,可利用此參數建立備存文件的符號表。
S 不產生符號表。
u 只將日期較新文件插入備存文件中。
v 程序執行時顯示詳細的信息。
V 顯示版本信息。

生成靜態鏈接庫


靜態庫是目標文件的一個集合,通常靜態庫以“.a”為後綴。靜態庫由程序ar生成,如今靜態庫已經不像之前那麼普遍了,這主要是由於現在的程序一般都使用動態庫。

生成靜態鏈接庫

工具ar的選項-r,可以創建庫,並把目標文件插入到指定庫中。目標文件一般為C語言源文件(*.c)編譯后的文件(*.o)。
一般格式:$ar -r LibName.a ObjFile.o [ObjFile2.o] [ObjFile3.o] [...]
例如,將string.o打包為庫文件libstr.a的命令為:
$ar -rcs libstr.a string.o

使用靜態鏈接庫

在編譯程序的時候經常需要使用函數庫,例如經常使用的C標準庫等。GCC鏈接時使用庫函數和一般的目標文件的形式是一致的(詳見gcc命令)。
例如,main.c中使用了libstr.a中的函數,生成最終的可執行文件main.out的命令如下:
$gcc -o main.out main.c libstr.a