1.命令簡介
ar(ARchiver)命令是 GNU Binutils 的一員,可以用來創(chuàng)建、修改靜態(tài)庫,也可以從靜態(tài)庫中提取單個模塊。靜態(tài)庫是一個獨(dú)立的文件,里面包含了按照特定的結(jié)構(gòu)組織起來的其它的一些文件(稱做此庫文件的 member)。原始文件的內(nèi)容、訪問模式、時間戳、屬主和組等屬性都保留在庫文件中。
2.命令格式
ar[--plugin][-X32_64][-][abcDfilNoPsSTuUvV[relpos][count]][--target][archive][member...]
其中連字符[-]
是可選的,選項(xiàng)
為操作選項(xiàng),使用時只能使用其中一個,選項(xiàng)[abcDfilNoPsSTuUvV]
為修飾選項(xiàng),用來修飾操作選項(xiàng),與操作選項(xiàng)配合使用時,二者的順序可以任意。[relpos]
表示庫中的成員名,用于加入新文件時指定相對位置,與選項(xiàng)a、b和i結(jié)合使用。[count]
表示在庫中有多個同名的成員時,指定提取或刪除的個數(shù)。[archive]
為庫名稱,[member...]
為庫的成員名稱。
3.選項(xiàng)說明
#操作選項(xiàng)說明
d:Delete,從庫中刪除由[member...]指定的模塊,如果使用了修飾選項(xiàng)v則列出被刪除的每個模塊
m:Move,該操作是在一個庫中移動成員。當(dāng)庫中如果有若干模塊有相同的符號定義(如函數(shù)定義),則成員的位置順序很重要。如果沒有指定任選項(xiàng),任何指定的成員將移到庫的最后。也可以使用a,b或i選項(xiàng)指定移動到的位置
p:Print,顯示庫中指定的成員到標(biāo)準(zhǔn)輸出。如果指定修飾選項(xiàng)v,則在輸出成員的內(nèi)容前,將顯示成員的名字。如果沒有指定成員的名字,所有庫中的文件將顯示出來
q:Quick append,快速追加。增加新模塊到庫的結(jié)尾處。并不檢查是否需要替換。a,b或 i 修飾選項(xiàng)對此操作沒有影響,模塊總是追加到庫的結(jié)尾處。如果使用了修飾選項(xiàng)v則列出每個模塊。這時,庫的符號表沒有更新,可以用ar s或ranlib來更新庫的符號表索引
r:Replacement,以替換模式向庫中插入成員。當(dāng)插入的模塊名已經(jīng)在庫中存在,則替換同名的模塊。默認(rèn)的情況下,新的成員增加在庫的結(jié)尾處,可以使用其他任選項(xiàng)a,b或i來改變增加的位置
s:寫入一個目標(biāo)文件索引到庫中,或者更新一個存在的目標(biāo)文件索引。甚至對于沒有任何變化的庫也作該動作。對一個庫做ar s等同于對該庫做ranlib。注意,s也可以作為修飾選項(xiàng)來使用
t:Table,顯示庫的模塊表清單。如果指定文件名稱,則僅顯示指定的那些文件。如果不指定任何文件,則列出庫中的所有文件。一般只顯示模塊名,如果結(jié)合選項(xiàng)v可顯示文件的訪問權(quán)限、時間戳、屬主和組等信息
x:eXtract,從庫中提取一個成員。如果不指定要提取的模塊,則提取庫中所有的模塊
#修飾選項(xiàng)說明
a:After,在庫的一個已經(jīng)存在的成員后面增加一個新的文件。已經(jīng)存在的成員由relpos 參數(shù)指定
b:Before,在庫的一個已經(jīng)存在的成員前面增加一個新的文件。已經(jīng)存在的成員由relpos 參數(shù)指定
c:Create,創(chuàng)建一個庫。不管庫是否存在,都將創(chuàng)建
D:Deterministic,以確定性模式操作。添加文件和存檔索引時,對uids、gid、時間戳使用零,對所有文件使用一致的文件模式。使用此選項(xiàng)時,如果ar與相同的選項(xiàng)和相同的輸入文件一起使用,則多次運(yùn)行將創(chuàng)建相同的輸出文件,而不考慮輸入文件的所有者、組和文件。模式或修改時間。如果binutils配置為--enabledeterministic archives,那么默認(rèn)情況下,此模式為on。可以使用下面的U修飾符禁用它
f:在庫中截短指定的名字。缺省情況下,文件名的長度是不受限制的,可以使用此參數(shù)將文件名截短,以保證與其它系統(tǒng)的兼容
i:Insert,在庫中一個已經(jīng)存在的成員前面增加一個新的文件已經(jīng)存在的成員由relpos 參數(shù)指定(類似選項(xiàng)b)
l:暫未使用
N:與[count]參數(shù)一起使用,在庫中有多個相同的文件名時指定提取或刪除的個數(shù)
o:Original,當(dāng)提取成員時,保留成員的原始數(shù)據(jù)。如果不指定該選項(xiàng),則提取出的模塊的時間將標(biāo)為提取出的時間
P:進(jìn)行文件名匹配時使用全路徑名。ar在創(chuàng)建庫時不能使用全路徑名(這樣的庫文件不符合POSIX標(biāo)準(zhǔn)),但是有些工具可以。此選項(xiàng)將導(dǎo)致GNU AR使用完整的路徑名匹配文件名,這在從另一個工具創(chuàng)建的存檔中提取單個文件時非常方便
s:等同于操作選項(xiàng)s,具體見必選項(xiàng)s的說明
S:不創(chuàng)建目標(biāo)文件索引,這在創(chuàng)建較大的庫時能加快時間
T:Thin,將指定的存檔設(shè)為精簡存檔。如果庫已經(jīng)存在并且是常規(guī)庫,則現(xiàn)有成員必須與存檔位于同一目錄中
u:一般說來,命令ar r member...插入所有列出的文件到庫中,如果你只想插入列出文件中那些比庫中同名文件新的文件,可以使用該選項(xiàng)。該選項(xiàng)只與 r 操作選項(xiàng)一起使用
U:Undeterministic,不要在確定性模式下操作。這與上面的D選項(xiàng)相反:被添加的文件和存檔索引將獲得它們的實(shí)際uid、gid、時間戳和文件訪問權(quán)限模式值。
v:該選項(xiàng)用來顯示執(zhí)行操作選項(xiàng)的附加信息
V,--version:顯示ar的版本信息
#其它選項(xiàng)說明
--help:顯示ar的幫助信息
--plugin:使ar加載指定的插件,這增加了對更多文件格式的支持。只有工具鏈構(gòu)建時開啟了插件支持的情況下,此選項(xiàng)才可用
-X32_64:此選項(xiàng)是GNU ar的默認(rèn)選項(xiàng),AR不支持任何其他-X選項(xiàng),比如-x32,此選項(xiàng)是AIX ar的默認(rèn)選項(xiàng)
--target:當(dāng)庫成員的目標(biāo)文件格式與系統(tǒng)的默認(rèn)格式不同時指定具體的格式
4.常用示例
(1)創(chuàng)建一個靜態(tài)庫。
arcrvlibtest.ahello.odablelv.o
(2)從靜態(tài)庫中提取指定目標(biāo)文件。
arx/usr/lib64/libc.aerrno.o
(3)查看靜態(tài)庫中指定目標(biāo)文件的詳細(xì)信息。
(4)從靜態(tài)庫中要刪除一個成員。注意,刪除前請備份C標(biāo)準(zhǔn)靜態(tài)庫libc.a。
ardvlibc.astrlen.o
參考文獻(xiàn)
[1] ar manual
[2] GNU Binutils
[3] linux ar命令
[4] ar (Unix).wikipedia
責(zé)任編輯:xj
原文標(biāo)題:每天一個 Linux 命令(102):ar 命令
文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
Linux
+關(guān)注
關(guān)注
87文章
11352瀏覽量
210534 -
命令
+關(guān)注
關(guān)注
5文章
698瀏覽量
22135 -
GNU
+關(guān)注
關(guān)注
0文章
143瀏覽量
17550
原文標(biāo)題:每天一個 Linux 命令(102):ar 命令
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
交換機(jī)常用配置命令
常用linux命令
夢之墨創(chuàng)新工程教育實(shí)踐套件家族再添一員
了解和使用GNU Radio軟件的功能并制作藍(lán)牙抓包器
![了解和使用<b class='flag-5'>GNU</b> Radio軟件的功能并制作藍(lán)牙抓包器](https://file1.elecfans.com/web1/M00/F5/2B/wKgaoWc3AqWAHYjXAAASaF5IKS4716.png)
用GNU構(gòu)建裸機(jī)系統(tǒng)
SD的命令和響應(yīng)
![SD的<b class='flag-5'>命令</b>和響應(yīng)](https://file1.elecfans.com/web2/M00/09/FA/wKgaomcE47iAGPHwAABPaFQw4ug541.png)
Juniper設(shè)備常用的巡檢命令介紹
華為設(shè)備中的OSPF命令詳解
思科網(wǎng)絡(luò)設(shè)備常用show命令
無法在Armv7l樹莓派3b+上運(yùn)行binutils-esp32ulp工具鏈怎么解決?
【合作伙伴】矽速科技 Lichee 系列再添一員! 致 RISC-V 探索者的輕型筆電
![【合作伙伴】矽速科技 Lichee 系列再添<b class='flag-5'>一員</b>! 致 RISC-V 探索者的輕型筆電](https://file.elecfans.com/web2/M00/02/C4/pYYBAGDSzfeAP86XAAAO5PbqJbI698.png)
求助,AD8041AR的相關(guān)問題求解
lscpu命令使用注意事項(xiàng)
軟件無線電安全之GNU Radio基礎(chǔ)知識
![軟件無線電安全之<b class='flag-5'>GNU</b> Radio基礎(chǔ)知識](https://file1.elecfans.com/web2/M00/C1/D1/wKgaomXapMCARVPSAAAgji7hiRc728.png)
評論