news 2026/8/29 2:05:19

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/8/28 23:30:57

亲测好用!继续教育TOP10个AI论文平台深度测评

亲测好用&#xff01;继续教育TOP10个AI论文平台深度测评 2026年继续教育AI论文平台测评维度解析 在当前快速发展的学术环境中&#xff0c;继续教育群体面临着写作效率低、文献检索困难、格式规范不熟悉等多重挑战。为帮助用户更高效地完成论文撰写与修改&#xff0c;本次测评…

作者头像 李华
网站建设 2026/8/26 15:04:31

浏览器就能远程:CrossDesk 开源远程桌面搭建教程

如果你经常需要远程操作服务器或另一台电脑,一定遇到过这些真实问题: 🖥️ 客户端要装一堆,换台电脑就得重来 😵 不同系统用不同远程工具,体验割裂 🧠 临时借电脑,发现没有远程软件 💻 公司电脑、家里电脑、服务器之间来回切 🔒 不太放心把远程控制交给第三方平…

作者头像 李华
网站建设 2026/8/25 13:20:04

前端必备:tiny-svg SVG 优化与代码生成工具搭建教程

如果你做过一段时间前端开发或 UI 设计对接,一定对 SVG 又爱又恨: 🎨 SVG 清晰、可缩放、非常适合图标 😵 但设计工具导出的 SVG 往往又大又乱 🧠 path、g、style 混在一起,根本不想看 💻 直接丢进项目,体积和可维护性都不理想 🔁 每次都要手动清理,非常耗时间…

作者头像 李华
网站建设 2026/8/19 15:28:49

亲测unet image Face Fusion镜像,人脸合成效果惊艳实录

亲测unet image Face Fusion镜像&#xff0c;人脸合成效果惊艳实录 1. 开箱即用&#xff1a;三分钟跑通人脸融合WebUI 第一次打开这个镜像时&#xff0c;我本以为又要经历漫长的环境配置、依赖安装和模型下载——毕竟人脸融合类工具向来以“部署复杂”著称。但科哥构建的这个…

作者头像 李华
网站建设 2026/8/25 11:02:50

Qwen-Image-Layered保姆级部署:整合包下载即用超省心

Qwen-Image-Layered保姆级部署&#xff1a;整合包下载即用超省心 Qwen-Image-Layered 不是传统意义上的图像生成模型&#xff0c;而是一个专为图像可编辑性重构而生的智能分层引擎。它不追求“画得像”&#xff0c;而是解决一个更底层、更实际的问题&#xff1a;如何让一张静态…

作者头像 李华
网站建设 2026/8/28 11:23:24

YOLOv13多尺度检测能力实测,小物体不丢失

YOLOv13多尺度检测能力实测&#xff0c;小物体不丢失 在工业质检产线识别0.5厘米的电路焊点、无人机巡检中捕捉百米外的电力绝缘子缺陷、智能交通系统实时定位密集车流中的远距离行人——这些场景共同指向一个长期困扰目标检测落地的核心难题&#xff1a;小目标极易漏检&#…

作者头像 李华