ar.1

AR(1)

AR(1)

FreeBSD General Commands Manual

AR(1)

ar, ranlib

管理档案

ar -d [-T] [-f] [-j] [-v] [-z] archive file ... ar -m [-T] [-a position-after] [-b position-before] [-f] [-i position-before] [-j] [-s | -S] [-z] archive file ... ar -p [-T] [-f] [-v] archive [file ...] ar -q [-T] [-c] [-D] [-f] [-s | -S] [-U] [-v] [-z] archive file ... ar -r [-T] [-a position-after] [-b position-before] [-c] [-D] [-f] [-i position-before] [-j] [-s | -S] [-u] [-U] [-v] [-z] archive file ... ar -s [-j] [-z] archive ar -t [-f] [-T] [-v] archive [file ...] ar -x [-C] [-T] [-f] [-o] [-u] [-v] archive [file ...] ar -M ranlib [-D] [-U] archive ...

ar 实用程序创建并维护组合成档案的文件组。 创建存档后,可以向其中添加新文件,并且可以提取、删除或替换现有文件。

文件在存档中由它们的最后一个文件名组件命名,因此如果包含 “/” 的路径引用的文件被存档,它将由路径的最后一个组件命名。 同样,当将命令行中列出的路径与存档中存储的文件名匹配时,只会比较路径的最后一个组成部分。

ar- 的正常使用是用于创建和维护适合与链接编辑器 ld(1) 一起使用的库,尽管它不限于此目的。 ar 实用程序可以创建和管理用于加速链接编辑操作的存档符号表(请参阅 ar(5) )。 如果存档中存在符号表,它将通过存档的后续操作保持最新。

ranlib 实用程序用于将存档符号表添加到现有存档。

ar 实用程序支持以下选项:

-a member-after

当与选项 -m 一起使用时,此选项指定由参数 file ... 指定的归档成员移动到由参数 member-after 命名的归档成员之后。 当与选项 -r 一起使用时,此选项指定由参数 file ... 指定的文件添加到由参数 member-after 命名的存档成员之后。

-b member-before

当与选项 -m 一起使用时,此选项指定由参数 file ... 指定的存档成员移动到由参数 member-before 命名的存档成员之前。 当与选项 -r 一起使用时,此选项指定由参数 file ...- 指定的文件添加到由参数 member-before 命名的存档成员之前。

-c

使用 -r-q 选项创建新存档时抑制打印的信息性消息。

-C

防止提取的文件替换文件系统中的同名文件。

-d

从参数 archive 指定的存档中删除参数 file ... 命名的成员。 存档的符号表(如果存在)将更新以反映存档的新内容。

-D

当与 -r-q 选项结合使用时,与 -s 选项不带其他选项一起使用时,或者当作为 ranlib 调用时,插入 0 而不是真正的 mtime、uid 和 gid 值和 0644 而不是来自命名成员的文件模式通过参数 file ... 这确保了当成员内容相同时,生成的存档上的校验和是可重现的。 默认情况下启用此选项。 如果在命令行上指定了多个 -D-U 选项,则最后一个优先。

-f

与选项 -T 同义。

-i member-before

与选项 -b 同义。

-j

此选项被接受但被忽略。

-l

接受此选项是为了与 GNU ar(1) 兼容,但会被忽略。

-m

在存档中移动由参数 file ... 指定的存档成员。 如果位置已由 -a, -b-i 选项之一指定,则成员将移动到指定位置之前或之后。 如果未指定位置,则将指定的成员移动到存档的末尾。 如果档案有符号表,则更新它以反映档案的新内容。

-M

从标准输入读取和执行 MRI 图书馆员命令。 ar 实用程序可以理解的命令在 MRI 图书管理员命令 部分中进行了描述。

-o

提取成员时保留成员的原始修改时间。

-p

将由参数 file ... 命名的指定存档成员的内容写入标准输出。 如果未指定任何成员,则归档中所有文件的内容将按照它们在归档中出现的顺序写入。

-q

将参数 file ... 指定的文件附加到参数 archive 指定的存档,而不检查文件是否已存在于存档中。 存档符号表将根据需要更新。 如果参数 archive 指定的文件不存在,将创建一个新的档案。

-r

在参数 archive 指定的存档中替换(添加)参数 file ... 指定的文件,必要时创建存档。 替换现有成员不会更改存档中成员的顺序。 如果在参数文件中命名的 file ... 不存在,则存档中与该名称匹配的现有成员不会更改。 除非指定了定位选项 -a, -b-i 之一,否则新文件将添加到存档的末尾。 存档符号表(如果存在)将更新以反映存档的新状态。

-s

将存档符号表(请参阅 ar(5) )添加到由参数 archive 指定的存档中。单独使用 -s 选项调用 ar 等效于调用 ranlib

-S

不要生成存档符号表。

-t

列出由参数 file ... 指定的文件,按它们在存档中出现的顺序排列,每行一个。 如果未指定文件,则列出存档中的所有文件。

-T

命名存档成员时,仅使用存档成员名称或命令行文件名参数的前 15 个字符。

-u

有条件地更新存档或提取成员。 当与 -r 选项一起使用时,如果由参数 file ... 命名的文件比它们的归档版本更新,它们将在归档中被替换。 当与 -x 选项一起使用时,参数 file ... 指定的成员仅在它们比文件系统中的相应文件更新时才会被提取。

-U

-r-q 选项结合使用时,插入真正的 mtime、uid 和 gid 以及来自参数文件命名的成员的文件模式值 file ... 。如果在命令上指定了多个 -D-U 选项行,最后一个优先。

-v

提供详细的输出。 当与 -d, -m, -q-x 选项一起使用时, ar 给出正在执行的归档修改的逐个文件描述,它由三个空格分隔的字段组成:选项字母、破折号 “-” 和文件名。当与 -r 选项一起使用时, ar 显示如上的描述,但如果将文件添加到存档中,则首字母为 “a” ,如果文件替换存档中已有的文件,则为 “r” 。 当与 -p 选项一起使用时,包含在 “<” 和 “>” 字符中的文件名将写入标准输出,前面有一个换行符,后跟两个换行符。 命名文件的内容跟在文件名后面。 当与 -t 选项一起使用时, ar 显示八个空格分隔的字段:由 strmode(3) 显示的文件权限、由斜杠 ( “/”) 分隔的十进制用户和组 ID、以字节为单位的文件大小、文件修改 strftime(3) 格式 “%b %e %H:%M %Y” 的时间,以及文件名。

-V

打印版本字符串并退出。

-x

将参数 file ... 指定的存档成员提取到当前目录中。 如果未指定任何成员,则提取档案的所有成员。如果与提取的成员对应的文件不存在,则将创建该文件。 如果提取的成员对应的文件确实存在,则其所有者和组将不会更改,而其内容将被覆盖,并且其权限将设置为存档中输入的权限。 除非指定了 -o 选项,否则文件的访问和修改时间将与提取时间相同。

-z

此选项被接受但被忽略。

如果指定了 -M 选项, ar 实用程序将从其标准输入读取并执行命令。 如果标准输入是终端, ar 实用程序将在读取一行之前显示提示 “AR >” ,即使遇到错误也会继续操作。 如果标准输入不是终端, ar 实用程序将不会显示提示,并会在遇到错误时终止执行。

每个输入行包含一个命令。 输入行中的单词由空格字符分隔。 该行的第一个单词是命令,其余单词是命令的参数。 在任何一种情况下都可以指定命令字。 参数可以用逗号或空格分隔。

允许空行并被忽略。 长行以 “+” 字符结束。

*” 和 “;” 字符开始评论。 注释一直延伸到行尾。

执行 MRI 图书管理员脚本时, ar 实用程序在存档的临时副本上工作。 使用 save 命令对副本进行永久更改。

ar 实用程序可以理解的命令是:

addlib archive | addlib archive (member [, member]...)

将由参数 archive 命名的档案内容添加到当前档案中。 如果使用参数 member 命名特定成员,则将这些成员添加到当前存档中。 如果未指定任何成员,则将归档的全部内容添加到当前归档。

addmod member [, member]...

将参数 member 命名的文件添加到当前存档。

clear

丢弃当前存档的所有内容。

create archive

创建一个由参数 archive 命名的新档案,并使其成为当前档案。 如果命名存档已存在,则在发出 save 命令时将覆盖它。

delete module [, member]...

从当前存档中删除由参数 member 命名的模块。

directory archive (member [, member]...) [outputfile]

列出存档中的每个命名模块。 输出的格式取决于使用 verbose 命令设置的详细程度设置。 输出被发送到标准输出,或由参数 outputfile 指定的文件。

end

ar 实用程序成功退出。 对当前存档的任何未保存的更改都将被丢弃。

extract member [, member]...

从当前存档中提取由参数 member 命名的成员。

list

以详细样式显示当前存档的内容。

open archive

打开由参数 archive 命名的档案并将其设为当前档案。

replace member [, member]...

将当前存档中的命名成员替换为参数 member 指定的文件。 文件必须存在于当前目录中,并且命名模块必须已经存在于当前存档中。

save

提交对当前存档的所有更改。

verbose

切换 directory 命令的详细程度。

要创建一个包含三个文件 ex1.o, ex2.o 和 ex3.o 的新存档 ex.a ,请使用:

ar -rc ex.a ex1.o ex2.o ex3.o

要将存档符号表添加到现有存档 ex.a, 请使用:

ar -s ex.a

要从档案 ex.a 中删除文件 ex1.o , 请使用:

ar -d ex.a ex1.o

要详细列出档案 ex.a 的内容, 请使用:

ar -tv ex.a

要使用 MRI 图书管理员命令创建包含文件 ex1.o 和 ex2.o 的新存档 ex.a ,请使用以下脚本:

create ex.a * specify the output archive addmod ex1.o ex2.o * add modules save * save pending changes end * exit the utility

The ar utility exits 0 on success, and >0 if an error occurs.

ld(1), archive(3), elf(3), strftime(3), strmode(3), ar(5)

ar 实用程序支持 -a, -b, -c, -i, -m, -p, -q, -r, -s, -t, -u, -v, -C-T 选项符合 IEEE Std 1003.2 (“POSIX.2”) 。

ar 命令首次出现在 AT&T UNIX 版本 1 中。在 FreeBSD 8.0 中, Kai Wang <kaiw@FreeBSD.org> 使用 Streaming Archive Library (libarchive, -larchive) 和 ELF Access Library (libelf, -lelf) 重新实现了 arranlib

June 16, 2016

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区