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
的静态库中。
三、常用命令选项(操作符)
d
m
p
q
r
t
x
四、常用修饰符(Modifers)
v
c
s
u
N
五、使用方法详解
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
, d
libtool
, llvm-ar
(在 LLVM 中)ar
是 C/C++ 编译和链接过程中不可缺少的工具。掌握它能帮助你更高效地组织代码模块、创建静态库,并理解编译器背后的运行机制。
这里是封面: