手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

ar(1)

名称

ar - 维护可移植的归档或库

用法概要

/usr/bin/ar -d [-SVv] archive file...
/usr/bin/ar -m [-abiSVv] [posname] archive file...
/usr/bin/ar -p [-SsVv] archive [file]...
/usr/bin/ar -q [-cSVv] archive file...
/usr/bin/ar -r [-abciuSVv] [posname] archive file...
/usr/bin/ar -t [-SsVv] archive [file]...
/usr/bin/ar -x [-CSsTVv] archive [file]...
/usr/xpg4/bin/ar -d [-SVv] archive file...
/usr/xpg4/bin/ar -m [-abiSVv] [posname] archive file...
/usr/xpg4/bin/ar -p [-SsVv] archive [file]...
/usr/xpg4/bin/ar -q [-cSVv] archive file...
/usr/xpg4/bin/ar -r [-abciuSVv] [posname] archive file...
/usr/xpg4/bin/ar -t [-SsVv] archive [file]...
/usr/xpg4/bin/ar -x [-CSsTVv] archive [file]...

描述

ar 实用程序维护已组合成单个归档文件的文件组。它的主要用途是创建和更新库文件。但是,它可以用于任何类似的用途。ar 使用的魔力字符串和文件头包含可显示的 ASCII 字符。如果归档由可显示文件组成,则整个归档都可显示。

ar 创建归档时,它使用可以跨所有计算机进行移植的格式来创建标头。可移植的归档格式和结构将在 ar.h(3HEAD) 中详细介绍。该处介绍的归档符号表供链接编辑器 ld(1) 使用,以便以高效的方式多次遍历目标文件库。仅在归档中至少存在一个目标文件时,ar 才会创建和维护归档符号表。归档符号表位于一个专门指定的文件中,该文件总是归档中的第一个文件。该文件决不会向用户显示或供用户访问。每当使用 ar 命令创建或更新此类归档的内容时,符号表即会重建。下面介绍的 –s 选项强制符号表重建。

选项

支持以下选项:

–a

将新的 file 放置在 archive 中,使其位于 posname 操作数指定的文件之后。

–b

将新的 file 放置在 archive 中,使其位于 posname 操作数指定的文件之前。

–c

禁止显示创建 archive 时缺省写入标准错误的诊断消息。

–C

阻止提取的文件替换文件系统中名称相同的文件。当同时使用 –T 选项阻止截断文件名替换具有相同前缀的文件时,该选项很有用。

–d

archive 中删除一个或多个 file

–i

将新的 file 放置在 archive 中,使其位于 posname 操作数指定的文件之前。该选项等效于 –b

–m

移动 file。如果同时指定了 –a–b–iposname 操作数,则 –m 选项将 file 移到新的位置。否则,–mfile 移到 archive 的末尾。

–p

archivefile 的内容显示在标准输出中。如果未指定 file,则会按照归档的顺序将 archive 中所有文件的内容写入标准输出。

–q

快速将 file 附加到 archive 的末尾。定位选项 –a–b–i 无效。该命令不检查添加的 file 是否已存在于 archive 中。此选项有助于在逐块创建大型归档时避免二次行为。

–r

archive 中替换或添加 file。如果 archive 不存在,则会创建新的归档文件并将诊断消息写入标准错误,除非指定了 –c 选项。如果未指定 file 并且 archive 存在,则结果不确定。替换现有文件的文件不会改变归档的顺序。如果同时使用 –u 选项和 –r 选项,则仅替换那些修改日期晚于归档文件的文件。如果使用 –a–b–i 选项,则 posname 参数必须存在并指定新的文件是放在 posname 之后 (–a) 还是之前(–b–i)。否则,新的文件将放在末尾。

–s

即使未通过将修改归档内容的选项调用 ar,也强制重新生成归档符号表。在对归档使用 strip(1) 命令之后恢复归档符号表时,此命令非常有用。

–S

当构建归档符号表时,强制使用具备 64 位功能的符号表格式。缺省情况下,将 32 位格式用于所有小于 4GB 的归档,将较大的格式用于超过 32 位限制的较大归档。

–t

显示 archive 的目录。file 操作数指定的文件包括在写入列表中。如果未指定 file 操作数,则会按照归档的顺序将 archive 中的所有文件包括在内。

–T

允许截断其归档名超过文件系统可支持长度的提取文件的文件名。缺省情况下,提取名称过长的文件会发生错误。在该情况下,会写入诊断消息并取消文件的提取。

–u

更新较早的文件。当使用 –r 选项时,archive 中的文件仅在对应 file 的修改时间晚于或等于 archive 中文件的修改时间时才会替换。

–v

提供详细输出。当配合 –d–r–x 选项使用时,–v 选项逐个文件编写归档创建、成员 file 和维护活动的详细描述。当配合 –p 使用时,–v 首先将文件名写入标准输出,然后再将文件本身写入标准输出。当配合 –t 使用时,–v 包括归档中文件的相关信息的较长列表。当配合 –x 使用时,–v 在每个提取之前显示文件名。当写入归档时,–v 将消息写入标准错误。

–V

在标准错误上显示其版本编号。

/usr/xpg4/bin/ar

/usr/xpg4/bin/ar 支持以下选项:

–v

/usr/bin/ar 版本一样,除了在写入归档时,不会将消息写入标准错误。

–x

archive 提取由 file 操作数指定的文件。archive 的内容不会发生更改。如果未指定 file 操作数,则会提取 archive 中的所有文件。如果从 archive 提取的文件的文件名超过要将其提取到的目录中支持的长度,则结果不确定。每个提取的 file 的修改时间设置为从 archive 提取 file 的时间。

操作数

支持下列操作数:

archive

归档文件的路径名。

file

路径名。当针对归档中的文件名进行比较时,仅使用最后一个组件。如果两个或多个 file 操作数具有相同的最后路径名组件(请参见 basename(1)),则结果不确定。实现的归档格式不会截断归档中添加或替换的文件的有效文件名。

posname

归档文件中的文件名,用于相对定位。请参见选项 –m–r

环境变量

有关影响 ar 执行的以下环境变量的描述,请参见 environ(5):LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、LC_TIME 和 NLSPATH。

TMPDIR

确定覆盖临时文件缺省目录的路径名(如果有)。

TZ

确定用于计算 ar –tv 写入的日期和时间字符串的时区。如果 TZ 未设置或为空,则使用不确定的缺省时区。

退出状态

将返回以下退出值:

0

成功完成。

>0

出现错误。

属性

有关下列属性的说明,请参见 attributes(5)

/usr/bin/ar

属性类型
属性值
可用性
system/linker
接口稳定性
Committed(已确定)

/usr/xpg4/bin/ar

属性类型
属性值
可用性
system/xopen/xcu4
接口稳定性
Committed(已确定)
标准
请参见 standards(5)

另请参见

basename(1)cpio(1)elffile(1)file(1)ld(1)lorder(1)strip(1)tar(1)ar.h(3HEAD)a.out(4)attributes(5)environ(5)standards(5)

附注

如果在参数列表中相同的文件指定了两次,则可以将其放入归档两次。

按照惯例,归档使用 ".a" 作为后缀。

当将 ELF 目标文件插入归档文件时,ar 可能会添加 \n 字符来填充这些目标文件,使其成为 8 字节边界。此类填充可以提高 ld(1) 访问归档的效率。仅 ELF 目标文件按照这种方式进行填充。其他归档成员不会发生更改。当从归档提取具有此类填充的目标文件时,填充不会包括在生成的输出中。

从头开始创建新的归档比通过单独调用 ar 将各个文件插入现有归档要快。如果可以,建议的策略是删除现有归档,然后通过单次 ar 调用重新创建归档。

归档的总大小允许超过 4GB。但是,归档中任何单个文件的大小由归档文件格式限制为 4GB。请参见 ar.h(3HEAD)

归档中单个文件的最大用户 ID 和组 ID 由归档文件格式限制为 6 个十进制数字。用户或组 ID 大于 999999 的任何文件都会自动设置为用户 ID “nobody” (60001) 或组 ID “nobody” (6001)。请参见 ar.h(3HEAD)