建设工作站服务器
ar
ar
指令可以创建和修改库,也可以从库中提取单个模块。 库是包含以特定结构组织的其他文件(称为member )的单独文件。 归档文件通常是二进制文件,用作库。 原始文件的内容、模式(权限)、时间戳、所有者和组存储在存档中,可以在提取时恢复。
GNU ar
成员可以保留具有任意长度名称的文件。 但是,根据系统上配置ar的方式,可以限制成员名称的长度,使其与其他工具维护的归档格式兼容。 如果存在,则限制通常为15个字符(典型为a.out相关格式)或16个字符(典型为coff相关格式)。
指定修饰符后,ar会为归档文件中可重定位对象模块定义的符号创建索引。 创建后,每当ar更改其内容时,都会在归档文件中更新此索引( q更新操作除外)。 具有这些索引的归档文件可以加快到库的链接,并可以相互调用库中的实例,而无需考虑它们在归档文件中的位置。 可以使用“nm -s”或“nm -print-armap”列出此索引表。 如果归档文件中没有表,可以使用另一种名为ranlib的ar格式添加表。
GNU ar
您可以自由创建包含符号索引和对文件成员文件原始副本的引用的精简归档文件。 这些归档文件有助于为本地构建构建库。 因为在局部构建中,可重定位对象保持可用,而复制每个对象的内容只会浪费时间和空间。 因为薄文件也是平面文件,所以向精简归档文件添加一个或多个文件时,会单独添加嵌套归档文件的元素。 归档文件元素的路径是针对归档文件本身保存的。
GNU Ar
旨在与两个不同的设施兼容。 使用命令行选项创建不同类型的Unix系统ar; 或者,如果指定了单个命令行选项-M,请单击MRI &; #039; librarian&; #039; 可以使用通过程序等标准输入提供的脚本进行控制。
此命令适用于: RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1
语法
ar [plugin name ] [-x32 _ 64 ] [-] p [ mod [ rel pos ] [ count ] ] archive [ member…]
2
、选项列表
GNU ar
可以按任意顺序在第一个命令行参数中混合使用操作代码p和修饰符标志mod。 如果需要,可以以“-”开始第一个命令行参数。 指定用p键字符执行的操作。 这是以下操作之一,但必须仅指定其中一个操作
操作代码
说明
C
创建归档文件
d
从归档文件中删除成员文件,并将member指定为要删除的模块的名称。 如果不指定要删除的文件,则归档文件不会更改
m
更改成员文件在归档中的顺序。 如果为多个成员定义了符号,则归档文件中成员的排序会改变库链接的使用方式。 如果未在" m "中使用修饰符,则使用成员参数命名的成员将移动到归档文件的末尾。 可以使用a、b或I修饰符移动到指定位置。
p
在标准输出文件中打印存档的指定成员。 如果指定了v限定符,则在将其内容复制到标准输出之前显示成员名称。
q
将文件附加在归档文件的末尾。 修饰符a、b、I不影响该操作; 新成员总是放在归档的末尾。 修饰符v在添加时每个文件都有ar列表。 由于此操作的重点是速度,因此存档的符号表索引即使已经存在也不会更新; 可以显式使用ar或ranlib来更新符号表索引。 但是,由于有太多以快速添加索引为前提的系统,GNU ar实现了q作为r的同义词。
r
将文件“‘member”插入到归档文件中,复盖要插入到归档中的文件(如果存在)。 此操作与q不同,如果现有成员的名称与要添加的成员匹配,则会将其删除。 对成员添加&; #039; ‘成员和映射; #039; 如果不存在,ar将显示错误消息,并且不会干扰与该名称匹配的现有归档成员。 默认情况下,新成员将添加到文件末尾。 但是,可以使用修饰符a、b或I之一请求相对于现有成员的位置。 与此操作一起使用的修饰符v将导致每个插入文件的一行输出。 字符a或字符r表示是否添加或替换了文件。
t
显示归档文件中包含的文件的列表。 通常只显示成员名称; 如果要查看架构(权限)、时间戳、所有者、组和大小,还可以使用v限定符请求。 如果未指定成员,则会列出归档文件中的所有文件。 如果归档文件中有多个具有相同名称的文件,则只列出第一个实例。 要显示这些,需要完整的列表。
x
从存档文件中提取成员文件。 在提取时,可以在此操作中使用v修饰符向ar请求每个名称的列表。 如果不指定成员,则会提取归档文件中的所有文件。 无法从精简归档文件中提取文件。
许多修饰符( Mod )可以在p键之后指定操作行为的变化
修饰符
说明
A
在现有存档成员之后添加新文件。 使用修饰符a时,现有归档成员的名称必须作为relpos参数出现在归档规范之前。
B
在现有存档成员之前添加新文件。 如果使用限定符b,则现有归档成员的名称必须作为relpos参数出现在归档规范之前。 (与I相同)
C
制作文件。 请求更新时,如果指定的归档文件不存在,则会始终创建。 但是,除非事先指定使用此限定符创建警告,否则将发出警告。
d
在确定模式下操作。 添加文件和归档文件索引时,UID、GID和时间戳为0,并且对所有文件使用一致的文件模式。 使用此选项时,如果将ar与相同选项和相同输入文件一起使用,则无论输入文件的所有者、组、文件模式或修改时间如何,多次运行都会创建相同的输出文件。
f
截断归档文件中的名称。 GNU ar通常允许任意长度的文件名。 这将创建与某些系统上的本地ar程序不兼容的文件。 如果这是一个问题,则在将f限定符放入归档文件时,可以使用f限定符截断文件名。
I
在已存档的现有成员之前插入新文件。 使用修饰符I时,现有归档成员的名称必须作为relpos参数出现在归档规范之前。 (与b相同)
l
未使用的修饰符
n
使用计数参数。 如果归档文件中有多个同名的条目,请使用此方法。 从归档文件中提取或删除具有指定名称的实例数
o
提取成员时保留成员的原始日期。 如果不指定此限定符,则从文件中提取的文档将被设置为提取时间。
p
在归档文件中匹配名称时使用完整路径名。 GNU ar不能创建具有完整路径名的归档文件。 这样的归档不是POSIX投诉。 但是,其他归档创建者可以。 如果选中此选项,GNU ar将使用完整的路径名匹配文件名。 这在从使用其他工具创建的归档文件中提取单个文件时很有用。
s
将对象文件索引写入归档文件或更新现有索引,即使未对归档文件进行其他更改也是如此。 此修饰符标志可以在任何操作中使用,也可以单独使用。 在归档文件上运行ar与在其上运行ranlib相同。
s
请不要生成存档符号表。 这样可以加快构建大型数据库的几个步骤。 结果归档文件不能与链接器一起使用。 要生成符号表,必须在最后一次运行ar时省略s限定符,或者在归档文件中运行ranlib。
t
将指定的归档文件设置为精简归档文件。 如果已经存在,并且是常规归档,则现有成员必须与归档目录相同。
u
通常,ar r会将所有列出的文件插入归档文件。 如果希望仅插入比同名的现有成员新的文件,请使用此限定符。 u修饰符只能用于r (替换)操作。 不能特别使用组合qu。 因为检查时间戳会失去操作q在速度上的优势。
v
显示详细的执行过程
v
显示ar的版本
AR
忽略初始选项-x32_64,使其与AIX兼容。 此选项生成的行为是GNU ar的默认行为。 ar不支持其他-X选项; 特别是,它不支持-x32。 这是AIX ar的默认设置。
使用可选的命令行开关“plugin name”,ar可以加载名为name的插件并添加更多的文件格式支持。 仅当在工具链中启用了插件支持时,此选项才可用。
@file
选项,从文件中读取命令行选项。 导入的选项将插入而不是原始的@file选项。 如果文件不存在或无法读取,则会按字面处理选项,而不删除选项。 文件选项由空格分隔。 可以通过将整个选项用单引号或双引号引起来在选项中包含空格字符。 任何包含反斜杠的字符都可以通过前缀中的字符包含在反斜杠中。 文件本身可能包含其他@file选项; 所有这样的选项都是递归处理的。
3
、实例
1
)创建归档文件
[root@localhost weijie]#
ar -rc mlib.a 1.c 2.c//
创建归档文件
[root@localhost weijie]# ls
11.C1.C1.c至2.C3.C4.C4.c至5.C6.cm lib.a
[root@localhost weijie]#
ar -t mlib.a//
显示已归档文件的列表
1.c
2.c
2
将文件插入归档文件
[root@localhost weijie]#
ar -rc mlib.a 3.c//
插入
3.c
此时归档文件中还没有
3.c
[root@localhost weijie]#
ar -t mlib.a//
显示文件列表,然后单击、
3.c
被加入
1.c
2.c
3.c
[root@localhost weijie]#
ar -rc mlib.a 1.c//
插入
1.c
这个时候请注意
1.c
已经存在
[root@localhost weijie]#
ar -t mlib.a//
显示文件列表,然后单击、
1.c
已经盖好了
1.c
2.c
3.c
3
在归档文件的末尾插入文件
[root@localhost weijie]#
ar -q mlib.a 1.c//
使用选项
q
加到最后,这个和
r
是不一样的
[root@localhost weijie]#
ar -t mlib.a//
看了文件列表,添加了
1.c
1.c
2.c
3.c
1.c
4
从归档文件中删除文件
[root@localhost weijie]#
ar -d mlib.a 1.c//
删除
1.c
[root@localhost weijie]#
ar -t mlib.a//
查看文件列表,首先
1.c
虽然删除了,但是最后还有一个
2.c
3.c
1.c
[root@localhost weijie]#
ar -d mlib.a 1.c//
再删除一次
1。
C
[root@localhost weijie]#
ar -t mlib.a//
显示文件列表,然后单击、
1.c
已删除
2.c
3.c
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn