ar 命令:归档与静态库管理实战
ar 是 Linux 系统中处理归档文件(archive)的核心工具,主要用于将多个文件打包成一个单一文件。在 C/C++ 开发领域,它最常被用来创建静态链接库(.a 文件)。虽然功能看似简单,但在实际编译和部署过程中,正确使用它能显著提升效率。
核心参数说明
理解参数是掌握 ar 的关键,以下是常用选项的对照:
| 参数 | 含义 |
|---|---|
r | 将文件插入到归档中,若存在则更新 |
x | 从归档中提取文件 |
t | 列出归档中包含的文件名 |
c | 创建新归档,若已存在则静默忽略 |
v | 显示详细操作过程(verbose) |
f | 紧跟其后指定归档文件名 |
s | 生成或更新符号索引表(类似 ranlib) |
基本操作场景
创建归档文件
最常用的组合是 ar rcs。这表示创建(c)、静默模式、插入(r)并指定文件名(f)。
ar rcs libmylib.a file1.o file2.o
这条命令会创建一个名为 libmylib.a 的归档文件,并将 file1.o 和 file2.o 放入其中。注意,如果归档文件已存在,r 参数会尝试更新它;加上 c 参数可以确保即使文件不存在也能安全创建,避免报错中断脚本。
查看归档内容
在提取之前,确认里面有什么总是个好习惯。使用 t 参数配合 v 可以看到详细信息。
ar tv libmylib.a
输出会显示每个文件的权限、所有者、大小以及修改时间。这对于排查'为什么这个文件没被包含进去'或者'版本是否匹配'非常有用。
提取与替换
如果需要把里面的某个对象文件拿出来单独调试,用 x 即可。
ar x libmylib.a file1.o
如果想替换归档里的旧文件,直接用 r 覆盖同名文件即可,无需先删除再添加。
ar r libmylib.a new_file.o
清理归档
有时候归档里混入了不需要的小文件,可以用 d 参数删除。
ar d libmylib.a old_file.o


