news 2026/3/12 16:00:02

Linux 命令:ar

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 命令:ar

一、ar命令核心概念

ar(archive)的核心作用是将多个目标文件(.o文件)打包成一个静态库文件(通常以.a为后缀),程序编译时可以直接链接这个静态库,无需逐个引用目标文件。

  • 静态库:本质是多个目标文件的集合,链接时会被完整复制到最终的可执行文件中。
  • 常见使用场景:封装通用功能(如工具函数),方便项目复用和管理。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

二、ar命令基本语法

ar[选项][静态库文件名][目标文件1][目标文件2]...

三、常用选项与核心用法

ar命令的选项是其核心,最常用的组合是rcs,下面拆解关键选项和用法:

选项作用
-c创建静态库(若库文件不存在则新建,存在则覆盖)
-r将目标文件插入/替换到静态库中(已有同名文件则替换)
-s为静态库生成索引(加快链接速度,等价于ranlib命令)
-t列出静态库中包含的所有文件
-d从静态库中删除指定文件
-x从静态库中提取指定文件(不指定则提取全部)
1. 创建静态库(最常用)

假设你有两个目标文件func1.ofunc2.o,要打包成libmylib.a

# 核心命令:创建并生成索引,推荐固定用 rcs 组合ar rcs libmylib.a func1.o func2.o
  • 静态库命名规范:通常以lib开头,.a结尾(如libxxx.a),方便编译器识别。
2. 查看静态库内容
# 列出 libmylib.a 中所有文件ar t libmylib.a# 输出示例:# func1.o# func2.o# 更详细信息(含文件权限、大小等):加 -v 选项ar tv libmylib.a
3. 从静态库删除文件
# 从 libmylib.a 中删除 func2.oar d libmylib.a func2.o
4. 提取静态库中的文件
# 提取 libmylib.a 中的 func1.o 到当前目录ar x libmylib.a func1.o# 提取全部文件(不加文件名)ar x libmylib.a

四、完整使用示例(从编译到链接)

  1. 编写源文件math.c(实现加法功能):
// math.cintadd(inta,intb){returna+b;}
  1. 编译为目标文件:
gcc -c math.c -o math.o# -c 只编译不链接,生成 math.o
  1. ar创建静态库:
ar rcs libmath.a math.o
  1. 编写主程序main.c并链接静态库:
// main.c#include<stdio.h>intadd(inta,intb);// 声明库函数intmain(){printf("3 + 5 = %d\n",add(3,5));return0;}
  1. 编译并链接静态库:
# -L. 表示在当前目录找库,-lmath 表示链接 libmath.a(自动省略 lib 和 .a)gcc main.c -o main -L. -lmath
  1. 运行程序:
./main# 输出:3 + 5 = 8

五、注意事项

  1. ar仅处理静态库,动态库(.so)需用gcc -shared生成,不适用ar
  2. 若静态库更新(如替换目标文件),需重新用ar rcs生成(-s确保索引更新)。
  3. 查看静态库的符号表(函数/变量名)可配合nm命令:nm libmath.a

总结

  1. ar核心用途是创建/修改/提取静态库(.a文件),最常用组合是ar rcs 库名.a 目标文件
  2. 静态库命名遵循libxxx.a规范,链接时用-lxxx引用。
  3. ar t查看库内容、ar x提取文件、ar d删除文件是高频辅助用法。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/11 1:03:39

亲测Glyph镜像效果!AI看文档处理24万字小说真实体验分享

亲测Glyph镜像效果&#xff01;AI看文档处理24万字小说真实体验分享 1. 这不是“又一个OCR工具”&#xff0c;而是让AI真正“读完”整本小说的新方式 你有没有试过让大模型读一本完整的小说&#xff1f;不是摘几段&#xff0c;不是看摘要&#xff0c;而是从第一章到最后一章&…

作者头像 李华
网站建设 2026/3/11 16:12:32

Altium Designer教程入门:系统学习层叠设置与板框规划

以下是对您提供的博文内容进行 深度润色与专业重构后的版本 。本次优化严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹&#xff0c;语言自然、有温度、具工程师口吻 ✅ 打破模块化标题结构&#xff0c;以逻辑流替代“引言/核心/应用/总结”等刻板框架 ✅ 内容有机融…

作者头像 李华
网站建设 2026/3/12 11:47:07

从0开始学OCR检测,cv_resnet18_ocr-detection让初学者更自信

从0开始学OCR检测&#xff0c;cv_resnet18_ocr-detection让初学者更自信 你是不是也经历过这些时刻&#xff1f; 打开一个OCR项目&#xff0c;看到满屏的requirements.txt、train.py、inference.py&#xff0c;心里直打鼓&#xff1a; “这要装多少依赖&#xff1f;” “模型权…

作者头像 李华
网站建设 2026/3/10 9:12:23

HuggingFace与ModelScope对比:CAM++来源平台优劣

HuggingFace与ModelScope对比&#xff1a;CAM来源平台优劣 1. CAM是什么&#xff1f;一个能“听声辨人”的实用工具 CAM是一个专注说话人识别的深度学习系统&#xff0c;由开发者“科哥”基于开源模型二次开发而成。它不生成文字、不翻译语音&#xff0c;而是专门解决一个更底…

作者头像 李华
网站建设 2026/3/12 11:54:47

企业客服质检新方案:用SenseVoiceSmall自动抓愤怒客户

企业客服质检新方案&#xff1a;用SenseVoiceSmall自动抓愤怒客户 在客服中心每天处理成百上千通电话的现实里&#xff0c;一个被反复忽略却代价高昂的问题是&#xff1a;真正愤怒的客户&#xff0c;往往在挂断前30秒才爆发。等人工质检抽样发现时&#xff0c;投诉早已升级、口…

作者头像 李华
网站建设 2026/3/11 1:10:34

航天技术背书!双向液冷,保障高密度机柜稳定运行

在当下数字化快速发展的时期&#xff0c;数据中心以及算力中心如同信息时代的“心脏”&#xff0c;承担着海量数据的处理以及运算任务&#xff0c;随着人工智能、大数据、云计算等新兴技术的快速发展&#xff0c;算力中心对于机柜密度以及性能的要求变得越来越高&#xff0c;不…

作者头像 李华