iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux基础命令---ar
  • 751
分享到

Linux基础命令---ar

2023-06-06 00:06:13 751人浏览 八月长安
摘要

arar指令可以创建、修改库,也可以从库中提取单个模块。库是一个单独的文件,里面包含了按照特定结构组织起来的其他文件,我们称作member。归档文件通常是一个二进制文件,我们一般将归档文件当作库来使用。原始文件的内容、模式(权限)、时间戳、

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 "librarian"程序。

此命令的适用范围:RedHat、RHEL、ubuntuCentos、SUSE、openSUSE、Fedora。

 

1、语法

ar  [--plugin name]   [-X32_64]  [-]p[mod [relpos]  [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的不同之处在于,如果现有成员的名称与要添加的成员匹配,则删除它们。如果成员中不存在‘member’,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、时间戳使用零,并对所有文件使用一致的文件模式。当使用此选项时,如果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中的选项用空格分隔。可以在选项中包含空格字符,方法是将整个选项包围在单引号或双引号中。任何字符(包括反斜杠)都可以通过前缀所包含的字符来包括在反斜杠中。file本身可能包含额外的@file选项;任何此类选项都将被递归处理。

 

3、实例

1)创建归档文件

[root@localhost weijie]# ar -rc mlib.a 1.c 2.c           //创建归档

[root@localhost weijie]# ls

11.c  1.c  1.c~  2.c  3.c 4.c  4.c~  5.c  6.c  mlib.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             //再次删除1C

[root@localhost weijie]# ar -t mlib.a                  //查看文件列表,1.c已经被删除

2.c

3.c

 

 

--结束END--

本文标题: Linux基础命令---ar

本文链接: https://www.lsjlt.com/news/245229.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux基础命令---ar
    arar指令可以创建、修改库,也可以从库中提取单个模块。库是一个单独的文件,里面包含了按照特定结构组织起来的其他文件,我们称作member。归档文件通常是一个二进制文件,我们一般将归档文件当作库来使用。原始文件的内容、模式(权限)、时间戳、...
    99+
    2023-06-06
  • Linux基础命令---apachectl
    apachectlapachectl指令是apache http服务器的前端控制程序,可以协助控制apache服务的守护进程httpd。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fed...
    99+
    2023-06-05
  • Linux基础命令---more
    more将内容较长的文本文件内容分屏显示,支持定位关键字。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、语法more [-dlfpcsu] ...
    99+
    2023-06-05
  • Linux基础命令---gunzip
    gunzip解压缩被gzip压缩过的文件。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。1、语法gunzip [-acfhlLnNrtvV]  ...
    99+
    2023-06-05
  • Linux基础命令---sort
    sort以行为单位,对文本文件进行排,并输出排序结果。默认情况下,以每一行为一个单位,从首字符开始按照ASCII码向后逐个比较。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。...
    99+
    2023-06-06
  • Linux基础命令---mknod
    mknod创建块设备或者字符设备文件。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、语法mknod [选项]  设备名 ...
    99+
    2023-06-06
  • Linux基础命令(3)
    十二 lsof命令简介lsof(list open files) 是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 如传输控制协议 (TCP) ...
    99+
    2023-01-31
    命令 基础 Linux
  • linux命令基础(3)
    find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。find的使用格式如下:find <指定目录> <指定条件> <指定动作>- <指定目录>: 所要搜索的目录及其所有子目录。...
    99+
    2023-01-31
    命令 基础 linux
  • Linux基础命令- history
    Linux基础命令- history 1.history 显示历史命令 作用:用于显示历史记录和执行过的指令命令 当登录shell或者是退出的时候会自动进行读取和存储 1.常用参数 语法:# history 选项 参数#参数-n ...
    99+
    2023-08-22
    linux 运维 服务器
  • Linux基础命令---mysql
    mysqlmysql是一个简单的sql shell,它可以用来管理mysql数据库。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora。 1、语法mysql [options] ...
    99+
    2023-06-05
  • Linux基础命令---csplit
    csplit将文件按照指定的模式分割,默认的输出文件名是xx00、xx01、xx02等,指令会显示每个输出文件的大小。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。1、语法c...
    99+
    2023-06-05
  • Linux基础命令---zcat
    zcat解压有gzip压缩的文件,将解压结果送到标准输出。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。1、语法zcat [-fhVL] 文件 ...
    99+
    2023-06-05
  • Linux基础命令---zip
    zipzip是一种最通用的文件压缩方式,使用于unix、msdos、windows、OS等系统。如果在编译zip时包含bzip 2库,zip现在也支持bzip 2压缩。当将大于4GB的文件添加到存档中时,zip会自动使用Zip 64扩展名,...
    99+
    2023-06-06
  • Linux基础命令---date
    date以给定的格式显示当前的日期,或者设置系统时间。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。1、语法date [选项]。date [+格式]。da...
    99+
    2023-06-06
  • Linux基础命令--slabtop
    slabtopslabtop实时显示详细的内核板条缓存信息。它显示按所列排序条件之一排序的顶级缓存的列表。它还会显示一个统计信息头,其中填充了板坯层信息。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、S...
    99+
    2023-06-05
  • Linux基础命令---bzip2
    bzip2使用Burrows-Wheeler块排序文本压缩算法,将文件进行压缩,压缩比率比一般算法高一些。bzip2要求命令行标志附带一个文件名列表。每个文件都被自己的压缩版本替换,名称为“original_name.bz2”。每个压缩文件...
    99+
    2023-06-05
  • Linux基础命令---head
    head显示文件开头的几行,默认显示10行,可以使用选项-n来指定行数。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。1、语法head [选项] &nbs...
    99+
    2023-06-06
  • Linux基础命令---bunzip2
    bunzip2解压缩bzip2压缩过的文件。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。1、语法bunzip2 [-fkvsVL]  文件&n...
    99+
    2023-06-06
  • Linux基础命令---gzexe
    gzexe压缩可执行文件,在执行程序的时候可以自动实现解压。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。1、语法gzexe file 2、选项列表选项说...
    99+
    2023-06-06
  • Linux基础命令---find
    file判断指定文件的文件类型,它依据文件内容判断,并不依据扩展名。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。1、语法file [选项]  ...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作