选项

GNU ar 允许我们在第一个命令行参数中以任何顺序混合操作代码 p 和修饰符标志 mod。

p 关键字 指定要执行的操作;它可以是以下任何一种,但我们必须仅指定其中一种:

  • d:从存档中删除模块。指定要删除的模块名称作为成员;如果我们指定没有要删除的文件,则存档不会受到影响。如果指定 v 修饰符,则 ar 会在每个模块被删除时列出它。
  • m :使用此操作移动档案中的成员。如果在多个成员中定义了一个符号,则归档中成员的顺序可能会影响程序使用库的链接方式。如果没有修饰符与 m 一起使用,则我们在成员参数中命名的任何成员都将移动到存档的末尾;我们可以使用 a 、 b 或者 i 修饰符将它们移动到指定的位置。
  • p :将存档的指定成员打印到标准输出文件。如果指定了 v 修饰符,则在将其内容复制到标准输出之前显示成员名称。如果不指定成员参数,则打印存档中的所有文件。
  • q : 快速追加;从历史上看,将 files 成员添加到存档的末尾,而不检查替换。修饰符 a 、 b 和 i 不影响此操作;新成员总是放在档案的末尾。修饰符 v 使 ar 列出添加的每个文件。由于这个操作的重点是速度,即使存档的符号表索引已经存在,它也不会更新;我们可以显式使用 ar s 或者 ranlib 来更新符号表索引。然而,太多不同的系统假设快速追加重建索引,因此 GNU ar 将“q”实现为“r”的同义词。
  • r :将文件成员插入存档(带替换)。此操作与 q 的不同之处在于,如果任何先前存在的成员的名称与添加的名称匹配,则会删除它们。如果在 member 中命名的文件之一不存在,则 ar 会显示一条错误消息,并使与该名称匹配的存档中的任何现有成员不受干扰。默认情况下,新成员会添加到文件末尾,但我们可以使用修饰符 a 、 b 或者 i 之一来请求相对于某个现有成员的放置。与此操作一起使用的修饰符 v 为每个插入的文件引出一行输出,以及字母 a 或者 r 之一,以指示文件是被添加(没有删除旧成员)还是被替换。
  • t :显示一个表格,列出档案的内容,或者档案中存在的 member 中列出的文件的内容。通常只显示成员名称;如果我们还想查看模式(权限)、时间戳、所有者、组和大小,我们可以通过指定 v 修饰符来请求。如果不指定成员,则列出存档中的所有文件。如果存档中有多个同名文件(例如 fie )(例如 b.a ),则 art b.a fie 仅列出第一个实例;要查看所有内容,我们必须要求提供完整列表——在我们的示例中,art b.a 。
  • x :从存档中提取成员(命名成员)。在此操作中使用 v 修饰符来请求 ar 在提取每个名称时列出它。如果不指定成员,则提取存档中的所有文件。

在p关键字后面跟着一些修饰符,用于指定操作行为的变化:

  • a :在存档的现有成员之后添加新文件。如果使用修饰符 a ,则现有存档成员的名称必须作为 relpos 参数出现在存档规范之前。
  • b :在存档的现有成员之前添加新文件。如果使用修饰符 b ,则现有存档成员的名称必须作为 relpos 参数出现在存档规范之前(与 i 相同)。
  • c:创建存档。当我们请求更新时,如果指定的存档不存在,则始终会创建它。但是会发出警告,除非我们通过使用此修饰符提前指定希望创建它。
  • f :截断存档中的名称。 GNU ar 通常允许任何长度的文件名,迫使它创建与某些系统上的 ar 程序不兼容的档案。如果兼容性是一个问题, f 修饰符可用于在将文件放入存档时截断文件名。
  • i :在存档的现有成员之前插入新文件。如果使用修饰符 i ,则现有存档成员的名称必须作为 relpos 参数出现在存档规范之前(与 b 相同)。
  • l : 这个修饰符被接受但不被使用。
  • N :使用计数参数。如果存档中有多个具有相同名称的条目,则使用此选项。从存档中提取或者删除给定名称的实例计数。
  • o : 提取时保留成员的原始日期。如果未指定此修饰符,则从存档中提取的文件将标有提取时间。
  • P :匹配存档中的名称时使用完整路径名。 GNU ar 无法创建具有完整路径名的档案,但其他档案创建者可以。此选项将导致 GNU ar 使用完整路径名匹配文件名,这在从其他工具创建的存档中提取单个文件时会很方便。
  • s :将目标文件索引写入存档,或者更新现有索引,即使没有对存档进行其他更改。我们可以将此修饰符标志用于任何操作,也可以单独使用。在档案上运行 ar s 相当于在其上运行 ranlib。
  • S :不生成归档符号表。此设置可以通过几个步骤加快构建大型库的速度。生成的存档不能与链接器一起使用。为了构建符号表,我们必须在最后一次执行 ar 时省略 S 修饰符,或者我们必须在存档上运行 ranlib。
  • u :通常, ar r ... 将列出的所有文件插入存档中。如果我们只想插入比现有同名成员更新的文件,请使用此修饰符。 u 修饰符只允许用于操作 r(替换)。特别是,组合 qu 是不允许的,因为检查时间戳会失去操作 q 的任何速度优势。
  • v :此修饰符请求操作的详细版本。当添加修饰符 v 时,许多操作会显示添加信息,例如处理的文件名。
  • V :此修饰符显示 ar 的版本号。
Linux ar 命令:

'ar' 命令用于档案中创建、修改和提取文件

档案是一个单一文件,它以某种结构保存其他文件的集合,可以检索原始的单个文件(称为档案的成员)。

语法

ar [-X32_64] [-]p[mod [relpos] [count]] archive [member...]
日期:2020-07-15 11:16:53 来源:oir作者:oir