news 2026/4/23 18:19:41

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/4/23 12:33:13

在吴忠,遇见你的羽毛球引路人:与韩宁波教练一起,科学系统地成长

在吴忠&#xff0c;越来越多的羽毛球爱好者正汇聚于一个共同的选择——吴忠码上羽毛球俱乐部。这里不仅是挥洒汗水的运动场&#xff0c;更是一个有方法、有温度、有记录的成长平台。俱乐部的核心灵魂&#xff0c;国家二级运动员韩宁波教练&#xff0c;正以其专业的背景和独特的…

作者头像 李华
网站建设 2026/4/23 12:30:16

工控机环境下IAR安装兼容性解决方案:通俗解释

以下是对您提供的技术博文进行 深度润色与结构重构后的专业级技术文章 。全文已彻底去除AI生成痕迹&#xff0c;采用真实嵌入式系统工程师的口吻撰写&#xff0c;语言自然、逻辑严密、细节扎实&#xff0c;兼具教学性、实战性与工程严谨性。文中所有技术点均基于IAR官方文档、…

作者头像 李华
网站建设 2026/4/23 13:26:04

Vue列表渲染的隐形炸弹:为什么v-for必须加key?(新手必看)

文章目录一、问题现场&#xff1a;列表“失忆”了二、为什么key是“救命稻草”&#xff1f;Vue的虚拟DOM原理&#xff08;简化版&#xff09;举个真实例子&#xff1a;三、常见错误场景&#xff08;附代码对比&#xff09;❌ 错误1&#xff1a;用index当key&#xff08;最常见&…

作者头像 李华
网站建设 2026/4/23 15:31:24

TurboDiffusion部署教程:Wan2.1/2.2模型快速上手详细步骤

TurboDiffusion部署教程&#xff1a;Wan2.1/2.2模型快速上手详细步骤 1. TurboDiffusion是什么 TurboDiffusion是由清华大学、生数科技与加州大学伯克利分校联合研发的视频生成加速框架&#xff0c;不是简单套壳&#xff0c;而是从底层注意力机制出发的深度优化。它专为解决当…

作者头像 李华
网站建设 2026/4/23 12:30:52

LED显示屏尺寸大小解析:像素间距与分辨率深度剖析

以下是对您提供的博文《LED显示屏尺寸大小解析&#xff1a;像素间距与分辨率深度剖析》的 全面润色与专业升级版 。我以一位深耕LED显示系统十余年、兼具工程落地经验与技术传播能力的行业老兵视角&#xff0c;彻底重构了原文逻辑结构、语言节奏与知识密度&#xff0c;删减冗…

作者头像 李华