ar 是建立、修改、提取靜態庫(.a 文件)的核心工具,廣泛用於 C/C++ 專案構建。本文完整列舉操作指令與選項參數對照表。
將多個目標文件(.o)打包為單一靜態庫文件,保留各成員原屬性與權限。鏈接器鏈接靜態庫時,僅提取被引用的目標文件。
ar [-dmpqrtx] [cfosSuvV] [a|b|i member] archive [member...]
| 指令 | 功能 |
|---|---|
-d | 刪除庫中成員 |
-m | 移動成員順序 |
-p | 輸出成員內容到 stdout |
-q | 快速追加成員到末尾(不檢查重複、不更新符號表) |
-r | 插入/替換成員(最常用,自動更新符號表) |
-t | 列出庫成員清單 |
-x | 提取成員到當前目錄 |
| 選項 | 功能 |
|---|---|
a member | 在指定成員後插入 |
b member | 在指定成員前插入 |
c | 建立庫(不提示) |
f | 截斷過長文件名以兼容舊版 ar |
i member | 同 b,在指定成員前插入 |
o | 保留成員原始時間戳 |
s | 建立/更新符號表(等同 ranlib) |
S | 不產生符號表 |
u | 僅插入比庫中舊版本更新的文件 |
v | 詳細輸出過程信息 |
V | 顯示版本號 |
ar rcs libfoo.a *.o # 建立/更新靜態庫並生成符號表 ar t libfoo.a # 列出成員 ar x libfoo.a bar.o # 提取 bar.o ar d libfoo.a obsolete.o # 刪除成員 ar q libfoo.a new.o # 快速追加(大量構建時較快,事後需 ranlib)
ar 配合 ranlib/nm 是靜態庫構建鏈的基石,嵌入式、系統級開發必備技能。