Linux ar 命令详解:用于创建、修改和提取 归档文件(archive file) 的工具
Linux ar 命令详解
一、命令简介
ar(archive)命令是 Linux 和 Unix 系统中用于创建、修改和提取 归档文件(archive file) 的工具。它最常用于创建静态链接库(.a 文件),供编译器(如 gcc)链接使用。
归档文件是将多个文件(通常是目标文件 .o)合并为一个文件的一种方式,便于发布和链接。
ar是构建 C/C++ 程序静态库不可或缺的工具。
二、命令语法
ar [选项][命令][修饰符] archive_name file...
例如:
ar rcs libhello.a hello.o
将 hello.o 添加(或更新)到名为 libhello.a 的静态库中。
三、常用命令选项(操作符)
dmpqrtx四、常用修饰符(Modifers)
vcsuN五、使用方法详解
1. 创建静态库(.a 文件)
ar rcs libmath.a add.o sub.o mul.o
说明:
-
r: 插入(或替换)目标文件。 -
c: 如果库文件不存在则创建。 -
s: 添加符号索引(使链接器可用)。 -
libmath.a: 最终生成的静态库文件。 -
add.o sub.o mul.o: 要打包的目标文件。
2. 查看归档内容
ar t libmath.a
输出归档内的文件名列表。
加 v 查看详细:
ar tv libmath.a
3. 向现有归档中追加文件
ar r libmath.a div.o
将 div.o 插入到 libmath.a 中,如果已存在则替换。
4. 从归档中提取文件
ar x libmath.a sub.o
提取指定文件。
提取全部:
ar x libmath.a
5. 删除归档中的文件
ar d libmath.a sub.o
将 sub.o 从 libmath.a 中移除。
6. 移动文件位置
将 mul.o 移动到 add.o 之后:
ar m libmath.a mul.o add.o
六、ar 与 nm, ranlib 的关系
-
ar创建静态库(.a 文件) -
nm查看库中的符号信息 -
ranlib为归档添加符号索引(现在等价于ar s)
示例:
ar rcs libhello.a hello.onm libhello.a
七、相关配置文件与路径
-
.a文件常见于/usr/lib、/usr/local/lib等系统库目录。 -
使用
ldconfig,gcc -L/path -lxxx连接这些库。
八、编译流程示例(结合 gcc)
-
编译源文件为目标文件:
gcc -c math.c -o math.o
-
使用
ar创建静态库:
ar rcs libmath.a math.o
-
编译主程序并链接静态库:
gcc main.c -L. -lmath -o main
九、常见问题
undefined reference to \'function\'ar s 或 ranlib 添加索引no such file or directory.o 文件.a 文件编译后未生效-L 指定路径,-lxxx 链接库十、总结
ar.a 文件rcs, t, x, dlibtool, llvm-ar(在 LLVM 中)ar 是 C/C++ 编译和链接过程中不可缺少的工具。掌握它能帮助你更高效地组织代码模块、创建静态库,并理解编译器背后的运行机制。
这里是封面:


