Ar(Unix)
ar(archiver)是 Unix 系統上的歸檔工具,用佇咧將濟的檔案歸檔做一个檔案。` ar ` 目前一般干焦予人連結器用建立更新靜態庫佮生成 . deb 包。伊的歸檔功能這馬基本予人 ` tar ` 所取代。GNU Binutils 包含 ` ar ` .
Linux 標準規範(LSB)中,` ar ` 已經予人棄用,並且可能佇咧將來的版本內底提掉,理由是 LSB 無應該包含軟體開發工具佮指定 . o 和 . a 檔案格式。
檔案格式
ar 格式毋捌標準化過,歷史上有過多種的形式如 V 六 , V 七 , AIX 和 Coherent 等,佮通用格式攏有足大的差別。這馬的通用格式主要是兩種變體:BSD 和 System V(頭仔就叫 COFF,嘛予人 GNU,ELF 和 Windows 使用。)Debian 的 " . deb " 使用通用格式。
. ar 檔案起頭是一个全域檔案頭,煞來是各個檔案的檔案頭佮資料部分。資料的部份為兩位元組掠齊,若是資料長度做奇數,添充一个換行符(\ n,零 x 零 A)。
特徵簽章
為 ` " ! < arch > " ` 佮換行符(零 x 零 A).
檔案頭
歸檔的每一个檔案包含檔案頭儲存檔案資訊。下表為通用格式。數值為 ASCII 編碼,而且用空格 ( 零 x 二十 ) 向正爿添充。
檔頭全部為可列印的 ASCII 字元佮換行符,所以干焦包含文字檔案的 ar 歸檔檔案猶原是文字檔案。
每一个檔案對尪仔數位元組開始,若長度為奇數,著愛添充一个換行符,檔案頭中的檔案大小儲存是實際大細。
因為檔名長度佮格式的限制,GNU 和 BSD 變體攏設計無仝的儲存長檔名的方法。就算通用格式袂受著二空三八年問題的困擾,毋過真濟系統上的 ar 程式佇這種問題,可能需要修改以正確處理超過二十一孵四千七百四十八撨三千六百四十七的時間黜。有關遮的擴充的說明,請參見 libbfd。
根據格式的無仝,真濟 ar 實現用佇快速連結的全域符號表(armap,kha-tá-lok-guh 抑是索引)毋免掃描規个存檔中的符號。POSIX 辨識此功能,並且要求 ar 實現具有 `-s ` 選項更新符號表。大多數實現共伊囥佇第一个檔案條目中。
BSD 變體
BSD ar 咧檔名頭填充 ASCII 空格符,檔名稱包含空格有問題。四四 BSD ar 將 " # 一 / " 佮檔名長度囥咧檔案名段,並且將檔名囥佇資料段的上頭前
BSD ar 家己無處理全域符號走揣表,若使用單獨的工具ranlib。ranlib 會插入一个佮系統架構相關的檔案 ` _ _ . SYMDEF ` 作為頭一个檔案一寡後來的版本會佇咧名稱後壁囥一个空格佮 " SORTED " 字元表示已經排序。Darwin 六十四位的元系統使用 ` _ _ . SYMDEF _ 六十四 `。
因為 POSIX 規範要求 `-s ` 選項,新的 BSD ar 重新實現矣該要求。FreeBSD 棄用矣 SYMDEF 表而採用 System V 類型的走揣表。
System V(抑是 GNU)變體
System V ar 用字元'/'(零 x 二 F)標記檔名結束,對而且檔名會當使用空格。需要擴充的檔案共檔名儲存佇咧 " / / " 檔案的資料段,佇檔頭檔案名段中寫入'/'佮十進位的偏徙位址。" / / " 檔案包含的是長檔名列表,以換行符分割。通常 " / / " 是第二个條目,符號表為第一个條目。
System V ar 用 " / " 檔名表示對應的資料做符號走揣表,包含三部份,並儲存做連紲的資料。
一 . 一个三十二位元整數,大端儲存:符號表的條目數。 二 . 一組三十二位元整數,大端儲存:每一个表示該符號佇歸檔中的位置。 三 . 一組字串,零結尾:符號名號做一寡 System V ar 莫使用上述各式,如 HP-UX 十一孵空,上述資訊的儲存為 SOM 檔案格式。
共解決四 GiB 檔案限制,某一寡系統如 Solaris 十一孵二和 GNU 使用無仝款的走揣表。無仝的所在佇咧使用六十四位元的整數佮用 " / SYM 六十四 / " 代替 " / "
Windows 變體
Windows 的 PE / COFF 格式因為 System V / GNU。第一个條目為 " / " 佮 System V / GNU 符號表相仝。第二个條目嘛是 " / ",使用小端整數,表示 ECOFF 擴充,用佇儲存經過排序的符號交叉參照表。第三个條目為 " / / " 長檔名的資料。
Thin archive
GNU binutils 和 elfutils 中的 ` ar ` 有一个 " thin archive " 格式,特徵簽章為 ` ! < thin > `,干焦包含符號表佮對該檔案的參照。
參見
- Deb
- 歸檔格式
- Unix 實用程式列表
參考
外部連結
- ` ar ` : create and maintain library archives – 命令佮工具(Commands & Utilities)參考,單一 UNIX® 規範第七期,由國際開放標準組織發布
- ` ar ( 一 ) `– Plan 九通用命令(General Commands)手冊頁
- ` ar ( 一 ) `– Inferno 通用命令(General Commands)手冊頁
- ` ar ( 一 ) `– Linux 使用者命令(User Commands)手冊頁
- ` ar ( 一 ) `– FreeBSD 通用命令(General Commands)手冊頁
- ` ar ( 一 ) ` – Version 七 Unix Programmer's Manual
- ` ar ( 五 ) `– FreeBSD 檔案格式(File Formats)手冊頁--an account of Unix formats
- _ The 三十二-bit PA-RISC Run-time Architecture Document , HP-UX 十一孵空 Version 一垺零 , _ Hewlett-Packard , 一千九百九十七 .
See _ Chapter 四 : Relocatable Libraries _ . Available at [四] ( devresource . hp . com )