0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GNU Binutils的一員:ar命令

Linux愛好者 ? 來源:Linux愛好者 ? 作者:戀貓大鯉魚 ? 2021-02-02 11:54 ? 次閱讀

1.命令簡介

ar(ARchiver)命令是 GNU Binutils 的一員,可以用來創(chuàng)建、修改靜態(tài)庫,也可以從靜態(tài)庫中提取單個(gè)模塊。靜態(tài)庫是一個(gè)獨(dú)立的文件,里面包含了按照特定的結(jié)構(gòu)組織起來的其它的一些文件(稱做此庫文件的 member)。原始文件的內(nèi)容、訪問模式、時(shí)間戳、屬主和組等屬性都保留在庫文件中。

2.命令格式

ar[--plugin][-X32_64][-][abcDfilNoPsSTuUvV[relpos][count]][--target][archive][member...]

其中連字符[-]是可選的,選項(xiàng)為操作選項(xiàng),使用時(shí)只能使用其中一個(gè),選項(xiàng)[abcDfilNoPsSTuUvV]為修飾選項(xiàng),用來修飾操作選項(xiàng),與操作選項(xiàng)配合使用時(shí),二者的順序可以任意。[relpos]表示庫中的成員名,用于加入新文件時(shí)指定相對位置,與選項(xiàng)a、b和i結(jié)合使用。[count]表示在庫中有多個(gè)同名的成員時(shí),指定提取或刪除的個(gè)數(shù)。[archive]為庫名稱,[member...]為庫的成員名稱。

3.選項(xiàng)說明

#操作選項(xiàng)說明
d:Delete,從庫中刪除由[member...]指定的模塊,如果使用了修飾選項(xiàng)v則列出被刪除的每個(gè)模塊
m:Move,該操作是在一個(gè)庫中移動(dòng)成員。當(dāng)庫中如果有若干模塊有相同的符號定義(如函數(shù)定義),則成員的位置順序很重要。如果沒有指定任選項(xiàng),任何指定的成員將移到庫的最后。也可以使用a,b或i選項(xiàng)指定移動(dò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則列出每個(gè)模塊。這時(shí),庫的符號表沒有更新,可以用ar s或ranlib來更新庫的符號表索引
r:Replacement,以替換模式向庫中插入成員。當(dāng)插入的模塊名已經(jīng)在庫中存在,則替換同名的模塊。默認(rèn)的情況下,新的成員增加在庫的結(jié)尾處,可以使用其他任選項(xiàng)a,b或i來改變增加的位置
s:寫入一個(gè)目標(biāo)文件索引到庫中,或者更新一個(gè)存在的目標(biāo)文件索引。甚至對于沒有任何變化的庫也作該動(dòng)作。對一個(gè)庫做ar s等同于對該庫做ranlib。注意,s也可以作為修飾選項(xiàng)來使用
t:Table,顯示庫的模塊表清單。如果指定文件名稱,則僅顯示指定的那些文件。如果不指定任何文件,則列出庫中的所有文件。一般只顯示模塊名,如果結(jié)合選項(xiàng)v可顯示文件的訪問權(quán)限、時(shí)間戳、屬主和組等信息
x:eXtract,從庫中提取一個(gè)成員。如果不指定要提取的模塊,則提取庫中所有的模塊

#修飾選項(xiàng)說明
a:After,在庫的一個(gè)已經(jīng)存在的成員后面增加一個(gè)新的文件。已經(jīng)存在的成員由relpos 參數(shù)指定
b:Before,在庫的一個(gè)已經(jīng)存在的成員前面增加一個(gè)新的文件。已經(jīng)存在的成員由relpos 參數(shù)指定
c:Create,創(chuàng)建一個(gè)庫。不管庫是否存在,都將創(chuàng)建
D:Deterministic,以確定性模式操作。添加文件和存檔索引時(shí),對uids、gid、時(shí)間戳使用零,對所有文件使用一致的文件模式。使用此選項(xiàng)時(shí),如果ar與相同的選項(xiàng)和相同的輸入文件一起使用,則多次運(yùn)行將創(chuàng)建相同的輸出文件,而不考慮輸入文件的所有者、組和文件。模式或修改時(shí)間。如果binutils配置為--enabledeterministic archives,那么默認(rèn)情況下,此模式為on??梢允褂孟旅娴腢修飾符禁用它
f:在庫中截短指定的名字。缺省情況下,文件名的長度是不受限制的,可以使用此參數(shù)將文件名截短,以保證與其它系統(tǒng)的兼容
i:Insert,在庫中一個(gè)已經(jīng)存在的成員前面增加一個(gè)新的文件已經(jīng)存在的成員由relpos 參數(shù)指定(類似選項(xiàng)b)
l:暫未使用
N:與[count]參數(shù)一起使用,在庫中有多個(gè)相同的文件名時(shí)指定提取或刪除的個(gè)數(shù)
o:Original,當(dāng)提取成員時(shí),保留成員的原始數(shù)據(jù)。如果不指定該選項(xiàng),則提取出的模塊的時(shí)間將標(biāo)為提取出的時(shí)間
P:進(jìn)行文件名匹配時(shí)使用全路徑名。ar在創(chuàng)建庫時(shí)不能使用全路徑名(這樣的庫文件不符合POSIX標(biāo)準(zhǔn)),但是有些工具可以。此選項(xiàng)將導(dǎo)致GNU AR使用完整的路徑名匹配文件名,這在從另一個(gè)工具創(chuàng)建的存檔中提取單個(gè)文件時(shí)非常方便
s:等同于操作選項(xiàng)s,具體見必選項(xiàng)s的說明
S:不創(chuàng)建目標(biāo)文件索引,這在創(chuàng)建較大的庫時(shí)能加快時(shí)間
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、時(shí)間戳和文件訪問權(quán)限模式值。
v:該選項(xiàng)用來顯示執(zhí)行操作選項(xiàng)的附加信息
V,--version:顯示ar的版本信息

#其它選項(xiàng)說明
--help:顯示ar的幫助信息
--plugin:使ar加載指定的插件,這增加了對更多文件格式的支持。只有工具鏈構(gòu)建時(shí)開啟了插件支持的情況下,此選項(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)格式不同時(shí)指定具體的格式

4.常用示例

(1)創(chuàng)建一個(gè)靜態(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)庫中要?jiǎng)h除一個(gè)成員。注意,刪除前請備份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)題:每天一個(gè) Linux 命令(102):ar 命令

文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11182

    瀏覽量

    208534
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    669

    瀏覽量

    21958
  • GNU
    GNU
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    17437

原文標(biāo)題:每天一個(gè) Linux 命令(102):ar 命令

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    GNU構(gòu)建裸機(jī)系統(tǒng)

    于構(gòu)建和安裝GNU工具鏈,但是很難找到個(gè)將GNU C/C++工具鏈用于裸機(jī)ARM系統(tǒng)的綜合例子,該系統(tǒng)將具有現(xiàn)實(shí)項(xiàng)目中所需的所有基本特性。即使你找到了這樣個(gè)例子,你也很可能不知道為
    發(fā)表于 10-16 17:34 ?0次下載

    Juniper設(shè)備常用的巡檢命令介紹

    在網(wǎng)絡(luò)管理中,設(shè)備巡檢是確保網(wǎng)絡(luò)設(shè)備運(yùn)行正常、性能最佳的重要環(huán)節(jié)。Juniper Networks設(shè)備廣泛應(yīng)用于各類網(wǎng)絡(luò)環(huán)境,其特有的JUNOS操作系統(tǒng)提供了系列強(qiáng)大而實(shí)用的命令工具,用于設(shè)備巡檢和故障排查。本文將詳細(xì)介紹常見的Juniper設(shè)備巡檢
    的頭像 發(fā)表于 08-12 18:14 ?421次閱讀

    華為設(shè)備中的OSPF命令詳解

    開放最短路徑優(yōu)先協(xié)議(Open Shortest Path First,OSPF)是廣泛應(yīng)用于大型IP網(wǎng)絡(luò)中的種內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)。華為設(shè)備提供了豐富的OSPF命令,以幫助網(wǎng)絡(luò)管理配置和管理
    的頭像 發(fā)表于 08-12 18:13 ?955次閱讀

    思科網(wǎng)絡(luò)設(shè)備常用show命令

    在思科網(wǎng)絡(luò)設(shè)備的日常運(yùn)維中,有命令被頻繁使用,它們可以幫助網(wǎng)絡(luò)管理快速獲取重要信息并保存配置更改。在這篇文章中,我們將詳細(xì)介紹五個(gè)出場率最高的show命令:show interf
    的頭像 發(fā)表于 08-07 14:38 ?1032次閱讀

    無法在Armv7l樹莓派3b+上運(yùn)行binutils-esp32ulp工具鏈怎么解決?

    /esp32ulp-elf/2.28.51-esp-20191205/esp32ulp-elf-binutils/bin$ ./esp32ulp-elf-ar -bash: ./esp32ulp-elf-ar: No such
    發(fā)表于 06-24 06:26

    【合作伙伴】矽速科技 Lichee 系列再添一員! 致 RISC-V 探索者的輕型筆電

    原文標(biāo)題:【合作伙伴】矽速科技Lichee系列再添一員!致RISC-V探索者的輕型筆電文章出處:【微信公眾號:RISCV國際人才培養(yǎng)認(rèn)證中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
    的頭像 發(fā)表于 06-20 08:36 ?248次閱讀
    【合作伙伴】矽速科技 Lichee 系列再添<b class='flag-5'>一員</b>! 致 RISC-V 探索者的輕型筆電

    GNU make中文手冊

    電子發(fā)燒友網(wǎng)站提供《GNU make中文手冊.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 13:22 ?0次下載

    軟件無線電安全之GNU Radio基礎(chǔ)知識

    GNU Radio是款開源的軟件工具集,專注于軟件定義無線電(SDR)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。該工具集支持多種SDR硬件平臺,包括USRP、HackRF One和RTL-SDR等。用戶可以通過GNU
    的頭像 發(fā)表于 02-25 10:20 ?3748次閱讀
    軟件無線電安全之<b class='flag-5'>GNU</b> Radio基礎(chǔ)知識

    redis集群狀態(tài)查看命令

    Redis集群是種高可用性的分布式架構(gòu),可以通過多個(gè)節(jié)點(diǎn)實(shí)現(xiàn)數(shù)據(jù)的復(fù)制和負(fù)載均衡。為了維護(hù)集群的穩(wěn)定性和可靠性,管理需要監(jiān)控和查看集群的狀態(tài)。下面是詳細(xì)介紹Redis集群狀態(tài)查看命令
    的頭像 發(fā)表于 12-04 10:44 ?1159次閱讀

    ubuntu網(wǎng)絡(luò)配置命令

    Ubuntu是種廣泛使用的開源操作系統(tǒng),其網(wǎng)絡(luò)配置相對來說比較簡單和直觀。在本文中,我將向您介紹如何使用命令行設(shè)置和管理Ubuntu的網(wǎng)絡(luò)配置。 Ubuntu提供了許多命令行工具來配置和管理網(wǎng)
    的頭像 發(fā)表于 11-27 17:02 ?2478次閱讀

    ifconfig配置靜態(tài)ip命令

    概述 ifconfig命令是Linux系統(tǒng)中用于配置、管理網(wǎng)絡(luò)接口的命令,可以顯示當(dāng)前系統(tǒng)中所有網(wǎng)絡(luò)接口的配置信息,并進(jìn)行相應(yīng)的配置。 ifconfig命令的基本用法 要使用ifconfig
    的頭像 發(fā)表于 11-27 14:31 ?4323次閱讀

    linux如何進(jìn)入管理模式

    如何進(jìn)入Linux管理模式。 、使用su命令切換到管理模式 在Linux中,可以使用su命令(switch user的縮寫)切換到管理
    的頭像 發(fā)表于 11-23 10:56 ?6926次閱讀

    linux命令行運(yùn)行步驟

    現(xiàn)光標(biāo)右邊出現(xiàn)了個(gè)類似于“ ”或“#”的字符,這就是命令行提示符。在大多數(shù)Linux發(fā)行版中,普通用戶的提示符是“ ”,而管理或root用戶的提示符是“#”。 查找可用的命令 Li
    的頭像 發(fā)表于 11-17 10:18 ?713次閱讀

    linux切換到命令行模式

    在Linux中,可以通過以下步驟切換到命令行模式: 打開終端??梢栽趹?yīng)用菜單中找到終端或命令行終端。 在終端中輸入命令“exit”或“l(fā)ogout”,然后按回車鍵。 系統(tǒng)會(huì)提示您輸入管理
    的頭像 發(fā)表于 11-13 16:47 ?1630次閱讀

    shell命令和linux命令樣嗎

    結(jié)合在起,形成個(gè)相當(dāng)于面向過程的程序,即shell script,從而實(shí)現(xiàn)些復(fù)雜的功能。 而Linux命令則是用來對Linux系統(tǒng)進(jìn)行管理的
    的頭像 發(fā)表于 11-08 10:51 ?2621次閱讀