llvm-ar - LLVM 封存器¶
概要¶
llvm-ar [-]{dmpqrstx}[abcDilLNoOPsSTuUvV] [relpos] [count] archive [files…]
描述¶
llvm-ar 命令類似於常見的 Unix 工具程式 ar。它會將多個檔案(例如物件檔和 LLVM 位元碼檔案)封存到單一封存程式庫中,以便連結到程式中。但是,封存檔可以包含任何類型的檔案。根據預設,llvm-ar 會產生一個符號表,這會加快連結速度,因為只需要查閱符號表,而不需要查閱封存檔中的每個檔案成員。
llvm-ar 命令可用於*讀取* SVR4、GNU、BSD、Big Archive 和 Darwin 格式的封存檔案,以及*寫入* GNU、BSD、Big Archive 和 Darwin 風格的封存檔案。如果使用 SVR4 格式的封存檔搭配 r
(取代)、d
(刪除)、m
(移動)或 q
(快速更新)操作,則會以 --format
定義的格式重建封存檔。
以下是 llvm-ar 與先前 ar 實作的不同之處
不支援下列選項
[f] - 截斷插入的檔案名稱
為了相容性,會忽略下列選項
–plugin=<string> - 載入支援其他檔案格式的插件
[l] - 在 ar 中忽略
符號表
由於 llvm-ar 支援位元碼檔案,因此它建立的符號表包含原生符號和位元碼符號。
確定性封存檔
Windows 路徑
在 Windows 上,llvm-ar 會以與作業系統相同的區分大小寫方式處理封存*檔案*的名稱。在非 Windows 機器上,llvm-ar 不會區分大小寫。
選項¶
llvm-ar 的操作與其他 ar 實作相容。但是,有一些修飾詞(L
)在其他 ar 實作中找不到。llvm-ar 的選項指定要在封存上執行的單一基本操作、該操作的各種修飾詞、封存檔案的名稱,以及檔案名稱的選用清單。如果未指定 files 選項,則通常表示「無」或「所有」成員,具體取決於操作。選項、操作和修飾詞將在以下各節中說明。
最少選項集至少包含一個運算子和封存的名稱。
操作¶
- d [NT]¶
從
archive
中刪除檔案。N
和T
修飾詞適用於此操作。files 選項指定應從封存中移除哪些成員。如果指定的檔案未出現在封存中,則不會發生錯誤。如果未指定 files,則不會修改封存。
- m [abi]¶
將檔案從
archive
中的一個位置移動到另一個位置。a
、b
和i
修飾詞適用於此操作。files 都將移動到修飾詞指定的位置。如果未使用修飾詞,則檔案將移動到封存的末尾。如果未指定 files,則不會修改封存。
- p [v]¶
將 files 列印到標準輸出流。如果未指定 files,則會列印整個
archive
。使用v
修飾詞時,llvm-ar 也會列印出正在輸出的檔案名稱。建議不要列印二進制檔案,因為它們可能會混淆您的終端機設定。p
操作永遠不會修改封存。
t[v] .. 選項:: t [vO]
修飾符(特定於操作)¶
以下修飾符特定於某些操作。請參閱「操作」章節以確定哪些修飾符適用於哪些操作。
- a¶
在插入或移動成員文件時,此選項指定新文件放置在 relpos 成員之後。如果找不到 relpos,則將文件放置在
archive
的末尾。relpos 不能在沒有a
、b
或i
的情況下使用。
- b¶
在插入或移動成員文件時,此選項指定新文件放置在 relpos 成員之前。如果找不到 relpos,則將文件放置在
archive
的末尾。relpos 不能在沒有a
、b
或i
的情況下使用。此修飾符與i
修飾符相同。
- L¶
快速附加
archive
時,改為快速附加其成員。這是 llvm-ar 中 gnu-ar 沒有的功能。
- N¶
提取或刪除與另一個成員同名的成員時,count 參數允許您提供一個正整數來選擇指定名稱的實例,其中「1」表示第一個實例。如果未指定
N
,則會選擇該名稱的第一個成員。如果未提供 count,則操作失敗。*count* 不能
- o¶
提取文件時,使用任何 文件 在
archive
中出現的修改時間。默認情況下,從歸檔中提取的 文件 使用提取時間。
- O¶
顯示歸檔內的成員偏移量。
- T¶
--thin
的別名。在許多 ar 實作中,T
具有不同的含義,如 X/Open 系統介面所指定。
- v¶
在列印 檔案 或
歸檔
檔案的目錄時,此修飾符會指示 llvm-ar 在輸出中包含額外資訊。
修飾符(通用)¶
以下修飾符可以應用於任何操作。
- D¶
對時間戳記和 UID/GID 使用零。這是預設設定。
- P¶
在匹配成員名稱時使用完整路徑,而不僅僅是檔名。這在操作由其他歸檔器生成的
歸檔
時非常有用,因為有些歸檔器允許路徑作為成員名稱。這是精簡歸檔的預設行為。
- s¶
此修飾符要求將歸檔索引(或符號表)添加到
歸檔
中,就像使用 ranlib 一樣。符號表將包含歸檔中所有位元碼檔案定義的所有外部可見函數和全域變數。預設情況下,llvm-ar 會在歸檔中生成符號表。這也可以用作操作。
- u¶
僅使用具有更新時間戳記的 檔案 更新
歸檔
成員。
- U¶
使用實際的時間戳記和 UID/GID。
其他¶
- --format=<type>¶
此選項允許選擇預設、gnu、darwin、bsd 或 coff 的
<type>
。使用預設的<type>
建立歸檔
時,:program:llvm-ar
會嘗試從輸入檔案推斷,如果無法推斷,則會回到預設的工具鏈目標。
- -h, --help¶
印出命令列選項及其含義的摘要。
- -M¶
此選項允許透過標準輸入流讀取 MRI 腳本。沒有其他選項與此選項相容。
- --output=<dir>¶
指定要將歸檔成員解壓縮到的目錄。預設情況下,使用目前的工作目錄。
- --rsp-quoting=<type>¶
- 此選項為回應檔案選擇 ``<type>`` 引號樣式,可以是 ``posix``¶
- 或 ``windows``。 在 Windows 上的預設值為 ``windows``, 否則 ¶
- 預設值為 ``posix``。¶
- --thin¶
建立或修改歸檔時,此選項指定
歸檔
將會是精簡的。預設情況下,不會將歸檔建立為精簡歸檔,並且在修改精簡歸檔時,它會被轉換為一般歸檔。
- --version¶
顯示 llvm-ar 可執行檔的版本。
- -X mode¶
指定 llvm-ar 將辨識的物件檔案類型。模式必須是以下其中一種
- 32
僅處理 32 位元物件檔案。
- 64
僅處理 64 位元物件檔案。
- 32_64
同時處理 32 位元和 64 位元物件檔案。
- 任何
處理所有目標文件。
預設為處理 32 位元目標文件(忽略 64 位元目標文件)。此模式也可以使用 OBJECT_MODE 環境變數設定。例如,OBJECT_MODE=64 會使 ar 處理任何 64 位元目標文件並忽略 32 位元目標文件。-X 旗標會覆寫 OBJECT_MODE 變數。
- @<FILE>¶
從回應文件
<FILE>
讀取命令列選項和命令。
MRI 腳本¶
llvm-ar 能夠理解 MRI 腳本介面的子集,這些介面通常由遵循 ar 傳統的封裝器支援。MRI 腳本包含一系列由封裝器執行的命令。-M
選項允許透過標準輸入串流將 MRI 腳本傳遞給 llvm-ar。
請注意,llvm-ar 在使用 MRI 腳本方面有已知的限制
每個腳本只能建立一個封裝檔。
無法修改現有的封裝檔。
MRI 腳本命令¶
每個命令都以命令的名稱開頭,並且必須出現在自己的行上。有些命令有參數,這些參數必須以空格與名稱分隔。MRI 腳本應該以 CREATE
或 CREATETHIN
命令開頭,並且通常以 SAVE
命令結尾。「*」或「;」之後的任何文字都將被視為註解。
- CREATE 封裝檔¶
以指定的名稱開始建立常規封裝檔。後續的命令將作用於此
封裝檔
。
- CREATETHIN 封裝檔¶
以指定的名稱開始建立精簡封裝檔。後續的命令將作用於此
封裝檔
。
- ADDLIB 封裝檔¶
將
封裝檔
的內容附加到目前的封裝檔。
- ADDMOD <檔案>¶
將
<檔案>
附加到目前的封裝檔。
- DELETE <檔案>¶
刪除目前封裝檔中,檔名(不包括目錄組件)與
<檔案>
相符的成員。
- SAVE¶
將目前的歸檔寫入先前
CREATE
/CREATETHIN
命令指定的路径。
- END¶
結束 MRI 腳本(可選)。
退出狀態¶
如果 llvm-ar 成功,它將以 0 退出。否則,如果發生錯誤,它將以非零值退出。