ar(1) | GNU 开发工具 | ar(1) |
ar - 建立,修改档案或从档案中抽取成员。
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' 列出 这种索引, 如果 档案 没有这类 索引, 可以 使用 另外 一个 称为ranlib 的ar 程序 增加 这种 索引.
ar 至少需要两个参数才能运行: 一个指明执行的 操作 (可能伴随有其它的 修饰符 ),作用的档案名字。 多数 操作 可以 接受 更多的文件 参数, 指明 操作的 详细 文件.
ar 允许你 在第一个 命令行 参数中 以任意 顺序 混合 指定 操作码p 和修饰符mod .
只要你 愿意, 也可以 用破折号 作为 命令行 第一个 参数的 开始.
p 关键字 指明 要执行的 操作, 只能 指明为 如下 之一:
如果 给出了'v' 修饰符,ar 会例出 它删除的 每一个 模块.
如果 某个 符号名 在档案的 多个 成员中 有定义, 那么 程序 怎样 连接 档案 文件 得到的 结果 可能是 不同的.
如果 没有为m 指定 修饰符, 由files 指出的 成员 将移动到 档案的末尾 ; 可以 通过 `a', `b' 或 `i' 等修饰符, 指定 成员 移动的 具体 位置.
如果没有 指明files 参数, 档案中 所有的 成员 都会被 打印 出来.
修饰符 `a' `b' 和 `i'不 影响此 操作, 新成员 始终 追加到 档案的 末尾处.
修饰符 `v' 可以使 ar 列出 它追加的 所有文件.
由于 本功能 是用于 快速操作, 即使 档案中 有 符号表 索引 也不 进行 更新; 可以 使用 `ar s' 或 ranlib 明确 要求 更新 这些索引.
在为快速 追加 重建 索引时,由于 有 太多 不同的 系统, 所以 GNU ar 采用 `q' 作为 `r'的一个 同义字.
如果 不存在 名称为 files 的文件, ar 显示 一个 错误 消息, 并且 保留 档案中 已有的 同名 成员.
缺省情况下, 新成员 增加到 挡案的 末尾; 可以 通过 使用 `a' `b' 或 `i' 等修饰符 指定 相对于 已有 成员的 位置.
通过 使用 `v' 修饰符 会为每个 插入的 文件 产生 一行 输出, 根据 输出中的 字符 `a' 或 `r' 可以 表明 该文件 是追加的 (没有 删除 以前的成员) 还是 替换的.
如果 没有 指出 files, 档案中的 所有 文件 都会 列出.
如果 档案中 (称为 `b.a') 有多个 同名 成员 (称为 `fie'), `ar t b.a fie' 仅仅 列出 第一个; 要看到 它们的 全部, 必须 要求 完整的 列表 —在本例中是 `ar t b.a'.
如果没有给出 files, 抽取 档案中 所有的 文件.
可以在 操作符 p 后紧随 一定数量的 修饰符 mod 以指明 操作的 各种 行为.
info 中的 `binutils' 条目; The GNU Binary Utilities, Roland H. Pesch (1991年10月). nm(1), ranlib(1).
Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999, 2000 Free Software Foundation, Inc.
This document is distributed under the terms of the GNU Free Documentation License, version 1.1. That license is described in the sources for this manual page, but it is not displayed here in order to make this manual more consise. Copies of this license can also be obtained from: http://www.gnu.org/copyleft/.
Yin Huaming <yhmact@pzh-public.sc.cninfo.net>
2002/06/23
http://cmpp.linuxforum.net
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh
1999 | Free Software Foundation |