总览

ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files...

描述

GNU 组织的ar 程序 用于建立, 修改档案 或从档案中 抽取成员. 一个 档案 是一个 包含了 很多 其它 文件的 单独的 文件, 它采用的 结构 使得 可以 很容易 恢复 原来 独立的 文件 (称为 档案的 成员 ).

原始文件 (成员)的 内容, 权限, 时间属性, 属主和组都在档案中 得到 保留, 在抽取时 可以 得到 恢复.

ar 程序 维护的 档案成员 可以 拥有 一定 长度的 名字; 具体情况, 与你系统上的ar 是怎样 配置的 有关. 为了 与其它 工具 维护的 档案格式 兼容, 有可能 对成员 名字的 长度 有严格的 限制, 如果 确实是 这样, 通常 要求 采用 15 个字符 (典型的 格式是 a.out), 或者 16 个字符(典型的 格式是 coff).

ar 是一个二进制格式的 工具, 因为 这一类 档案 多数 都作为保存 公共 例程的库文件 使用.

通过 指定 修饰符`s', ar 可以 建立 指向 档案中 可重定位 目标 模块定义的 符号表的 索引, 一旦建立, 在ar 更新 其内容时 (通过`q' 执行 更新 操作) , 此索引 也会 得到 更新. 有这种 索引的 档案 可以 加速到 库文件的 连接过程, 并且 允许 库中的 例程 相互调用 而无须 考虑它们 在档案中的 位置.

可以 使用`nm -s' 或 `nm --print-armap' 列出 这种索引, 如果 档案 没有这类 索引, 可以 使用 另外 一个 称为ranlibar 程序 增加 这种 索引.

ar 至少 需要 两个 参数 才能 运行: 一个 指明 执行的操作 (可能 伴随有 其它的修饰符), 作用的 档案 名字. 多数 操作 可以 接受 更多的文件 参数, 指明 操作的 详细 文件.

选项

ar 允许你 在第一个 命令行 参数中以任意 顺序 混合 指定 操作码p 和修饰符mod .

只要你 愿意, 也可以 用破折号 作为 命令行 第一个 参数的 开始.

p 关键字 指明 要执行的 操作, 只能 指明为 如下 之一:

d
从档案中删除 模块. 通过files 指明 要删除的 模块的 名称; 如果 没有 指出 要删除的文件 名称, 档案不会 改变 任何 内容.

如果 给出了'v' 修饰符,ar 会例出 它删除的 每一个 模块.

m
用此 操作 在档案中移动 成员.

如果 某个 符号名 在档案的 多个 成员中 有定义, 那么 程序 怎样 连接 档案 文件得到的 结果 可能是 不同的.

如果 没有为m 指定 修饰符, 由files 指出的 成员 将移动到 档案的末尾 ; 可以 通过 `a', `b' 或 `i' 等修饰符, 指定 成员 移动的 具体 位置.

p
在标准 输出上 打印 档案中 指定的 成员. 如果 给出了`v' 修饰符, 在 打印 成员 内容 之前, 先打印 成员的 名字.

如果没有 指明files 参数, 档案中 所有的 成员 都会被 打印 出来.

q
快速 追加; 增加 filesarchive 的末尾, 不进行 替换 检查.

修饰符 `a' `b' 和 `i' 影响此 操作, 新成员 始终 追加到 档案的 末尾处.

修饰符 `v' 可以使 ar 列出 它追加的 所有文件.

由于 本功能 是用于 快速操作, 即使 档案中有 符号表 索引 也不 进行 更新; 可以 使用 `ar s' 或 ranlib 明确 要求 更新 这些索引.

在为快速 追加 重建 索引时,由于 有 太多 不同的 系统, 所以 GNU ar 采用 `q' 作为 `r'的一个 同义字.

r
把文件 files 插入 archive ( 替换 ). 本操作与 `q' 是不同的, 如果 档案中 已有的 某个 成员与插入 文件的 名称 相同, 此成员 将被删除.

如果 不存在 名称为 files 的文件, ar 显示 一个 错误 消息, 并且 保留 档案中 已有的 同名 成员.

缺省情况下, 新成员 增加到 挡案的 末尾; 可以 通过 使用 `a' `b' 或 `i' 等修饰符 指定 相对于 已有 成员的 位置.

通过 使用 `v' 修饰符 会为每个 插入的 文件 产生 一行 输出, 根据 输出中的 字符 `a' 或 `r' 可以 表明 该文件 是追加的 (没有 删除 以前的成员) 还是 替换的.

t
显示 一个 archive 档案 所包含 内容的 列表 , 或 档案中的 由 files 指出的 文件 列表. 通常 只显示 成员的 名称, 如果 使用 `v' 修饰符, 可以 得到 成员的 权限, 时间属性, 属主, 组和 大小.

如果 没有 指出 files, 档案中的 所有 文件 都会 列出.

如果 档案中 (称为 `b.a') 有多个 同名 成员 (称为 `fie'), `ar t b.a fie' 仅仅 列出 第一个; 要看到 它们的 全部, 必须 要求 完整的 列表 ---在本例中是 `ar t b.a'.

x
从档案中 抽取 成员 (名称为 files) . 如果 使用 `v' 修饰符, ar 会列出 它抽取的 每一个 文件的 名字.

如果没有给出 files, 抽取 档案中 所有的 文件.

可以在 操作符 p 后紧随 一定数量的 修饰符 mod 以指明 操作的 各种 行为.

a
增加 文件到 档案中 已有 成员 之后 , 如果 使用了 修饰符 a, 必须在 档案 名称 archive 之前 以 membername 参数的 形式 给出 档案中 已有 成员的 名字.

b
增加 文件到 档案中 已有 成员 之前 , 如果 使用了 修饰符 b, 必须在 档案 名称 archive 之前 以 membername 参数的 形式 给出 档案中 已有 成员的 名字. (和修饰符 `i' 相同).

c
建立 档案. 指定的 档案 archive 始终 会被建立, 如果 你要求 执行的是 更新, 通过 此修饰符 建立 档案时 会给出 一个 警告.

f
截短 档案成员的 名字. ar 通常 允许 任意 长度的 文件名, 但这会 导致 与某些 系统上的 ar 出现 兼容性 问题, 使用 f 修饰符 可以 在往档案中 追加 文件时 把名字 截短.

i
插入 文件到 档案中 已有 成员 之前 , 如果 使用了 修饰符 i, 必须在 档案 名称 archive 之前 以 membername 参数的 形式 给出 档案中 已有 成员的 名字. (与修饰符 `b' 相同).

l
接受此修饰符, 但不起作用.

N
使用 count 参数. 本修饰符 用于 在档案中 有多个同名 成员的 情况. 删除 或抽取 档案中 给定 名字的第 count 个实例.

o
抽取 成员时 保留 他们 原始的 时间属性. 如果 没有 此修饰符, 文件以抽取的时间 作为 它的时间 属性.

P
匹配 档案中的 名字时 使用 完整的 路径名. ar 不能 建立 使用 完整 路径名的 档案 (这不符合 POSIX 标准), 但其它的 档案 工具 能够建立, 本选项 会使 ar 在抽取 由其它 工具 建立的 档案 文件时, 使用完整的 路径名 去匹配 档案中 成员的 名字.

s
即使 没有对 档案 进行 改变, 用本 修饰符 也可以往档案中 写一个 目标 文件的 索引 或更新 已经 存在的 索引. 可以与 其它 操作 一起 使用 本修饰符, 也可以 单独使用. 对一个 档案 执行 `ar s' 与执行 `ranlib' 等价.

S
不生成 档案的 符号表. 这可以 加速 建立 大的档案文件的 过程,但这样 建立的 档案 不能被 连接器 使用, 为建立 符号表, 在最后 执行 `ar' 时应该 不用 `S' 修饰符, 或者 对档案 执行 一次 `ranlib' .

u
通常ar r... 把所有 列出的 文件 插入到 档案中, 如果 希望 仅仅 插入比 档案中 已有 成员 更新的 文件时, 就应该 使用 此修饰符. `u' 修饰符 仅允许 与 `r' (替换) 操作 一起 使用. 某些 情况下, 由于 用 `q' 操作 比较 文件的 时间属性 会失去速度上的 优势, 所以 不允许 执行 `qu' 组合操作.

v
使用 本修饰符 可以 进行 冗余的 操作. 附加了此 修饰符时, 很多 操作 会显示更多的 消息, 如处理的 文件名等.

V
显示 ar 的版本号 . 

ar - 建立, 修改档案或从档案中抽取成员.的更多相关文章

  1. SQL Server 2005 sa登录失败。已成功与服务器建立连接 但是在登录过程中发生错误。 provider 共享内存提供程序 error 0 管道的另一端上无任何进程。

    SQL Server 2005 Express版 用户 'sa' 登录失败.该用户与可信 SQL Server 连接无关联.提示错误:已成功与服务器建立连接 但是在登录过程中发生错误. provide ...

  2. 如何修改myeclipse 内存,eclipse.ini中各个参数的作用。

    修改MyEclipse/eclipse文件夹中配置文件eclipse.ini中的内存分配就哦了 =================================== 一般的ini文件设置主要包括以下 ...

  3. C# 操作 Word 修改word的高级属性中的自定义属性2

    word的类库使用的是word2007版本的类库,类库信息见下面图片,折腾了半天,终于找到入口,网上 很多说的添加或者修改word的高级属性中的自定义属性都是错误的,感觉都是在copy网上的代码,自己 ...

  4. docker学习笔记:修改无法启动的容器中的内容

    我们可能会碰到这样的一个问题,在容器执行过程中,修改了容器的内容(如配置文件信息),但因为修改出了问题.导致容器关闭后,无法启动. 这事需要重新修改配置文件. 正常情况下可以通过 docker exe ...

  5. 日历类和日期类转换 并发修改异常 泛型的好处 *各种排序 成员和局部变量 接口和抽象类 多态 new对象内存中的变化

    day07 ==和equals的区别? ==用于比较两个数值 或者地址值是否相同.  equals 用于比较两个对象的内容是否相同   String,StringBuffer.StringBuilde ...

  6. 域账号修改后,导致vs中的git连接失败

    域账号修改后,导致vs中的git连接失败, fatal: Authentication failed for https://blog.csdn.net/qq_34665539/article/det ...

  7. Java中的成员初始化顺序和内存分配过程

    Java中的成员初始化顺序和内存分配过程 原帖是这样描述的: http://java.dzone.com/articles/java-object-initialization?utm_source= ...

  8. 接口中的成员变量必须是static

    首先要弄清接口的含义. 接口就是提供一种统一的'协议’, 而接口中的属性也属于'协议’中的成员.它们是公共的,静态的,最终的常量.相当于全局常量. 在interface里面的变量都是public st ...

  9. 文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式

    本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支. 1.总述, ...

随机推荐

  1. Linux内核--基于Netfilter的内核级包过滤防火墙实现

    测试内核版本:Linux Kernel 2.6.35----Linux Kernel 3.2.1 原创作品,转载请标明http://blog.csdn.net/yming0221/article/de ...

  2. Android连接wifi,调用系统API【转】

    本文转载自:http://blog.csdn.net/aaa1050070637/article/details/54136472 直接上代码,简单粗暴,一看就懂 import android.con ...

  3. HDU1754 —— I Hate It 线段树 单点修改及区间最大值

    题目链接:https://vjudge.net/problem/HDU-1754 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜 ...

  4. git unstage

    https://stackoverflow.com/questions/6919121/why-are-there-2-ways-to-unstage-a-file-in-git git rm --c ...

  5. [转]响应式web设计之CSS3 Media Queries

    开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...

  6. SQL Server 日期转换成字符串

    参考网址:http://wenku.baidu.com/view/970c6c1655270722192ef70e.html 下面是常用的几个 --返回06-27-13 ), ) --2013-06- ...

  7. P3161 [CQOI2012]模拟工厂

    传送门 先枚举选择哪些订单,然后转为判定是否可行 在能完成的情况下肯定是花越多时间提高生产力越优 我们设可以有\(x\)单位时间来提高生产力,那么如果当前离下一个订单的时间为\(T\)时,这个订单要\ ...

  8. LuoguP1606 [USACO07FEB]荷叶塘Lilypad Pond 【最短路】By cellur925

    最短路好题!] 参考资料:学长 https://blog.csdn.net/TSOI_Vergil/article/details/52975779 学长太强了!!!%%% 题目传送门 ======= ...

  9. 洛谷P2384 最短路(dijkstra解法)

    题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你100000000000000000000000000000000000%10金币w ...

  10. ACM_Encoding

    Encoding Time Limit: 2000/1000ms (Java/Others) Problem Description: 给定一个只包含'A' - 'Z'的字符串,我们可以使用以下方法对 ...