Linux ar命令详解

ar 命令是一个用于创建、修改和提取归档文件的工具,通常用于创建静态库(静态链接库)。这些静态库可以包含多个目标文件(.o 文件),并在链接时将这些目标文件打包成一个单一的库文件(通常以 .a 结尾)。

以下是 ar 命令的详细解释,包括常用选项和示例:

1、基本语法

C 复制代码
ar [options] archive-file file...

常用选项

  • r: 添加或替换文件到归档文件中。如果归档文件不存在,则创建一个新的归档文件。
  • c: 创建归档文件。如果归档文件存在,则不提示。
  • t: 列出归档文件的内容。
  • x: 从归档文件中提取文件。
  • d: 从归档文件中删除文件。
  • q: 快速添加文件到归档文件中(不排序,不检查重复)。
  • s: 创建归档文件的索引。通常在创建归档文件后运行 ar s 以确保索引正确。
  • v: 显示详细信息。

2、示例用法

  • 创建一个新的静态库
      假设你有几个目标文件(foo.o 和 bar.o),你想把它们打包成一个静态库 libmylib.a:
C 复制代码
ar t libmylib.a
  • 从归档文件中提取文件
      从 libmylib.a 中提取所有文件:
C 复制代码
ar x libmylib.a

提取特定文件 foo.o:

C 复制代码
ar x libmylib.a foo.o
  • 删除归档文件中的文件
      从 libmylib.a 中删除 foo.o:
C 复制代码
ar d libmylib.a foo.o
  • 快速添加文件到归档文件中
      快速将 baz.o 添加到 libmylib.a 中:
C 复制代码
ar q libmylib.a baz.o

3、常见工作流程

  • 编译源文件:将源文件编译成目标文件(.o 文件)。
C 复制代码
gcc -c foo.c
gcc -c bar.c
  • 创建静态库:使用 ar 命令将目标文件打包成一个静态库。
C 复制代码
ar rcs libmylib.a foo.o bar.o

r:添加或替换文件到归档文件中。

c:创建归档文件。

s:创建归档文件的索引。

  • 使用静态库:在编译其他程序时,链接这个静态库。
C 复制代码
gcc -o myprogram main.o -L. -lmylib

其中 -L. 表示链接器应该在当前目录查找库文件,-lmylib 表示链接 libmylib.a。

4、ar 命令的更多选项

P:使用完全路径名。

U:保留文件的 UID、GID、时间戳等信息。

5、总结

ar 命令是一个强大的工具,主要用于创建和管理静态库。在使用时,可以根据具体需求选择不同的选项。

相关推荐
0xDevNull8 小时前
Linux切换JDK版本详细教程
linux
进击的丸子8 小时前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端
Johny_Zhao2 天前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
chlk1233 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑3 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件3 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号4 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash4 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI4 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行5 天前
Linux和window共享文件夹
linux