ar命令可以用來創(chuàng)建沽瞭、修改庫迁匠,也可以從庫中提取單個(gè)模塊。庫是一單獨(dú)的文件,里面包含了按照特定的結(jié)構(gòu)組織起來的其他的一些文件(稱作此庫文件的member)城丧。原始文件的內(nèi)容延曙、模式、時(shí)間戳亡哄、組等屬性都包含在庫文件中枝缔。
語法
ar [-]{dmpqrstx}[abcDfilMNoPsSTuvV][a<membername>][b<membername>]archive-file files
參數(shù)
-d:刪除庫中的文件。
-m[abi]:變更成員文件在備存文件中的次序蚊惯。
-p:顯示庫文件中的成員文件內(nèi)容愿卸。
-q:將文件附加在庫文件末端。
-r[ab][f][u]:將文件插入庫文件中截型。
-s:若庫文件包含了對(duì)象模式趴荸,可利用此參數(shù)簡建立庫文件的符號(hào)表。
-t:顯示庫文件中所包含的文件菠劝。
-x:從庫文件中提取出成員文件赊舶。
選項(xiàng)參數(shù)
a<成員文件>:將文件插入到庫文件中指定的<成員文件>之后(after)睁搭。
b<成員文件>:將文件插入到庫文件中指定的<成員文件>之前(before)赶诊。
c:創(chuàng)建庫文件(無論庫文件是否已經(jīng)存在)。
D:用0來填充時(shí)間戳和uid园骆、gid舔痪。
U:用實(shí)際的時(shí)間戳、uid锌唾、gid(默認(rèn)參數(shù))锄码。
N:與count參數(shù)一起使用,在庫中有多個(gè)相同的文件名時(shí)指定提取或輸出的個(gè)數(shù)晌涕。
f:為避免過長的文件名不兼容于其他系統(tǒng)的ar指令指令滋捶,因此可利用此參數(shù),截掉要放入備存文件中過長的成員文件名稱余黎。
i<成員文件>:將文件插入到庫文件中指定的<成員文件>之前重窟。
o:保留庫文件中文件的日期。
P:進(jìn)行文件名匹配時(shí)使用全路徑名惧财。
u:只將日期比庫文件中的同名成員文件新的文件插入庫文件中巡扇。
v:程序執(zhí)行時(shí)顯示詳細(xì)的信息。
V:顯示版本信息垮衷。
S:不產(chǎn)生符號(hào)表厅翔。
{dmpqrstx}部分稱為操作選項(xiàng),選項(xiàng)前可以有‘-’字符搀突,也可以沒有刀闷;[abcDfilMNoPsSTuvV]部分稱為任選項(xiàng)。
操作項(xiàng)在命令中只能并且必須使用其中一個(gè),含義如下:
m:該操作在一個(gè)庫中移動(dòng)成員甸昏。當(dāng)庫中有若干模塊相同的符號(hào)定義(如函數(shù)定義)戈次,則成員的位置順序很重要。如果沒有指定選項(xiàng)筒扒,任何指定的成員將移動(dòng)到庫的最后怯邪。也可以使用‘a(chǎn)’,‘b’花墩,‘i’任何選項(xiàng)移動(dòng)到指定的位置悬秉。
q:快速追加。增加新模塊到庫的結(jié)尾處冰蘑。這時(shí)和泌,符號(hào)表沒有更新,可以用 ‘a(chǎn)r s’或ranlib來更新庫的符號(hào)表索引祠肥。
x:從庫中提取一個(gè)成員武氓。如果不指定要提取的模塊,則提取庫中所有的模塊仇箱。
可與操作項(xiàng)結(jié)合使用的任選項(xiàng):
N:與count參數(shù)一起使用县恕,在庫中有多個(gè)相同的文件名時(shí)指定提取或輸出的個(gè)數(shù)。
s:寫入一個(gè)目標(biāo)文件索引到庫中剂桥,或者更新一個(gè)存在的目標(biāo)文件索引忠烛。對(duì)一個(gè)庫做ar s等同于對(duì)該庫做ranlib。
S:不創(chuàng)建目標(biāo)文件索引权逗,這在創(chuàng)建較大的庫時(shí)能加快時(shí)間美尸。
使用
1.創(chuàng)建庫文件
ar -r libt.a a.h b.h
2.查看庫文件
ar -t libt.a
a.h
b.h
3.加入新成員
ar -ri a.h libt.a c.h
ar -t libt.a
c.h
a.h
b.h
4.刪除庫中的成員
ar -d libt.a c.h
ar -t libt.a
a.h
b.h
5.從庫中提取成員
ar -x libt.a
6.調(diào)整庫中成員的順序
ar -mb a.h libt.a b.h
ar -t libt.a
b.h
a.h