ar 命令

用途

维护链接编辑器使用的索引库。

语法

ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] {  -h | -p | -t | -x } [ -X {32|64|32_64|d64| any}] ArchiveFile [ File ...]

ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -m | -r [ -u ]} [ { -a | -b | -i } PositionName ] [ -X {32|64|32_64|d64|any}] ArchiveFile File ...

ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] [ -C ] [ -T ] [ -z ] { -d | -q } [ -X {32|64|32_64|d64|any}] ArchiveFile File ...

ar [ -c ] [ -l ] [ -v ] [ -C ] [ -T ] [ -z ] { -g | -o | -s | -w } [ -X {32|64|32_64|d64|any}] ArchiveFile

描述

ar 命令维护链接编辑器使用的索引库。 ar 命令将一个或多个指定的文件并入单个写成 ar 压缩文档格式的压缩文档文件。 当 ar 命令创建库时,它创建可传输格式的报头;当它创建或更新库时,它重建符号表。 有关格式和索引压缩文档和符号表的结构的信息,请参阅 ar 文件格式条目。

ar 命令识别两种文件格式。 “大压缩文档格式”ar_big ,是缺省文件格式并支持 32 位和 64 位目标文件。 小型存档格式可用于创建在比AIX 4.3 更早版本上可识别的存档,请参阅-g标志。 如果将一个 64 位的对象添加到小格式压缩文档,除非指定了 -g,否则 ar 首先将它转换为大格式。 缺省情况下,ar 仅处理 32 位目标文件;压缩文档中任何 64 位目标文件在没有提示的情况下被忽略。 要更改此行为,请使用 -X 标志或设置 对象方式 环境变量。

标志

ar 命令中,可以从集 cClosTv 中指定任何数量的可选标志。 必须从标志集 dhmopqrstwx 中指定一个标志。 如果选择 -m-r 标志,您可能还要指定一个位置标志(-a-b-i);对于 -a-b-i 标志,您必须还指定在 ArchiveFilePositionName)中一个文件的名称,此名称紧跟在标志列表后,并由空格隔开。

描述
-a PositionName PositionName 参数标识的现有文件后安置指定的文件。
-b PositionName PositionName 参数标识的现有文件前安置指定的文件。
-c 禁止在创建时产生的正常消息。
-C 阻止解压缩的文件替换文件系统中同名的文件。
-d 从库中删除指定的文件。
-g 对压缩文档成员进行排序以确保用最小数量的未用空间获得最大的加载效率。 在几乎所有情况下, -g 标志以压缩文档成员的逻辑链接顺序物理地安置它们。 最终生成的压缩文档通常写成小格式,这样该标志可用来将大格式压缩文档转换成小格式压缩文档。 包含 64 位 XCOFF 对象的压缩文档不能创建成或转换至小格式。
-h 将指定的文件的成员报头中的修改时间设置为当前日期和时间。 如果不指定任何文件名称,那么 ar 命令设置所有成员报头的时间戳记。 此标志不能和 -z 标志一起使用。
-i PositionName PositionName 参数标识的现有文件前安置指定的文件(和 -b 相同)。
-l 将临时文件置于当前(本地)目录中,而非 TMPDIR 目录中(缺省为 /tmp )。
-M 将指定的文件移动到库中的某个其他位置。 缺省情况下,它将指定的文件移动到库的末尾。 使用位置标志(abi)来指定某个其他位置。
-O 对压缩文档成员进行排序以确保用最小数量的未用空间获得最大的加载效率。 在几乎所有情况下, -o 标志以压缩文档成员的逻辑链接顺序物理地安置它们。 最终生成的压缩文档通常写成大格式,这样该标志可用来将小格式压缩文档转换成大格式压缩文档。
-p Files 参数中指定的文件的内容或在 ArchiveFile 参数中指定的所有文件(如果您不指定任何文件)都写至标准输出。
-q 将指定的文件添加到库的末尾。 另外,如果指定同一个文件两次,它可能被放入库中两次。
-r 如果指定的文件已经存在于库中,那么替换它。 因为指定的文件在库中占据它们替换的文件的同一个位置,位置标志没有任何附加的影响。 当和 -u 标志(更新)一起使用时,-r 标志仅替换自从最后一次添加到库中以后修改的文件。

如果指定的文件不存在于库中,那么 ar 命令添加它。 在这种情况下,位置标志影响放置。 如果不指定位置,那么将新文件置于库的末尾。 如果指定同一个文件两次,它可能被放入库中两次。

-s 无论 ar 命令是否修改了库内容都强制重新生成库符号表。 请在库上使用 strip 命令之后,使用此标志来恢复库符号表。
-t 将库的目录写至标准输出。 如果指定文件名称,那么仅显示指定的那些文件。 如果不指定任何文件,-t 标志列出库中的所有文件。
-t 如果压缩文档成员名称比文件系统支持的长,那么允许文件名称截短。 此选项无效,因为文件系统支持的名称长度等于 255 个字符的最大压缩文档成员名称。
-U 仅复制自它们最后一次复制起更改的文件(请参阅先前讨论过的 -r 标志)。
-v 将建立新库的详细的逐个文件的描述写至标准输出。 当和 -t 标志一起使用时,它给出类似于 ls -l 命令给出的长列表。 当和 -x 标志一起使用时,它在每个文件前加一个名称。 当和 -h 标志一起使用,它列出成员名称和更新的修改时间。
-w 显示压缩文档符号表。 每个符号和其中定义此符号的文件的名称一起列出。
-x 通过将指定的文件复制到当前目录来解压缩它们。 这些副本和原始文件(保留在库中)具有相同的名称。 如果不指定任何文件,-x 标志复制库中的所有文件。 此过程不会更改库。
-X 方式 指定 ar 应检查的目标文件的类型。 mode 必须是以下各项中的一个:
32
只处理 32 位对象文件
64
只处理 64 位对象文件
32_64
既处理 32 位对象文件,又处理 64 位对象文件
d64
检测到不连续的 64 位 XCOFF 文件(幻数 = U803XTOCMAGIC)。
any
处理所有支持的对象文件。
缺省值为处理 32 位对象文件(忽略 64 位对象文件)。 mode 也可用 OBJECT_MODE 环境变量来设置。 例如,OBJECT_MODE=64 使 ar 处理任何 64 位对象并忽略 32 位对象。 -X 标志覆盖 OBJECT_MODE 变量。
-z 创建压缩文档的临时副本并对副本执行所有要求的修改。 当所有操作成功完成时,压缩文档的工作副本覆盖原始副本。 此标志不能和 -h 标志一起使用。
ArchiveFile 指定压缩文档文件名称;必需。
MemberName ... 各压缩文档成员的名称。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 成功完成。
>0 发生错误。

示例

  1. 要创建库,请输入:
    ar -v -q lib.a strlen.o strcpy.o
    如果lib.a库不存在,此命令将创建该库并输入文件的副本strlen.ostrcpy.o. 如果lib.a库存在,那么此命令会将新成员添加到末尾而不检查重复成员。 v 标志设置详细方式,在此方式中 ar 命令在其进行时显示进程报告。
  2. 要列出一个库的目录,请输入:
    ar -v -t lib.a
    此命令将列示以下项的目录:lib.a库,显示与ls-l命令输出类似的长列表。 要只列出成员文件名称,那么省略 -v 标志。
  3. 要将新成员替换或添加到库中,请输入:
    ar -v -r lib.a strlen.o strcat.o
    此命令替换成员strlen.ostrcat.o. 如果lib.a1 创建,如示例 1 中所示,然后strlen.o替换成员。 一个名为strcat.o尚不存在,因此将添加到库的末尾。
  4. 要指定插入新成员的位置,请输入:
    ar -v -r -b strlen.o lib.a strcmp.o
    此命令添加strcmp.o文件,将新成员放置在strlen.o成员。
  5. 要更新成员 (如果已更改) ,请输入:
    ar -v -r -u lib.a strcpy.o
    此命令替换现有strcpy.o成员,但仅当文件strcpy.o自上次添加到库以来已被修改。
  6. 要更改库成员的顺序,请输入:
    ar -v -m -a strcmp.o lib.a strcat.o strcpy.o
    此命令移动成员strcat.ostrcpy.o立即进入位置strcmp.o成员。 以下项的相对顺序:strcat.ostrcpy.o成员已保留。 换句话说,如果是strcpy.o成员之前strcat.o在移动之前,它仍会执行此操作。
  7. 要抽取库成员,请输入:
    ar -v -x lib.a strcat.o strcpy.o
    此命令复制成员strcat.ostrcpy.o输入到指定的单个文件中strcat.ostrcpy.o,分别。
  8. 要抽取和重命名成员,请输入:
    ar -p lib.a strcpy.o >stringcopy.o
    此命令复制成员strcpy.o到一个名为stringcopy.o.
  9. 要删除成员,请输入:
    ar -v -d lib.a strlen.o
    此命令删除成员strlen.olib.a库。
  10. 要从使用 尔德命令创建的多个共享模块创建归档库,请输入:
    ar -r -v libshr.a shrsub.o shrsub2.o shrsub3.o ...
    此命令将创建一个名为libshr.a来自指定的共享模块shrsub.o,shrsub2.o,shrsub3.o,以此类推。 要编译和链接main程序使用libshr.a归档库,请使用以下命令:
    cc -o main main.c -L/u/sharedlib -lshr
    main程序现在是可执行的。 由以下项引用的任何符号:main所包含的程序libshr.a已将归档库标记为延迟解析。 -我 标志指定以下值:libshr.a搜索库以查找符号。
  11. 要列出 lib.a 的内容(忽略任何 32 位目标文件),请输入:
    ar -X64 -t -v lib.a
  12. 要从 lib.a 解压缩所有 32 位的目标文件,请输入:
    ar -X32 -x lib.a
  13. 要列出 lib.a 中的所有文件,无论是 32 位、64 位或非对象,请输入:
    ar -X32_64 -t -v lib.a

文件

描述
/tmp/ar* 包含了临时文件。