ar 命令中的 "rcs" 选项是什么意思?

32

我确实阅读了man手册,但没有帮助。 rcs似乎是传递给ar的最流行选项,但是它的含义对我来说并不那么清晰。

因此,c表示创建一个新存档文件,但是为什么要使用r呢?它似乎代表“替换”?s选项会对输出产生什么影响?


http://www.linuxcommand.org/man_pages/rcs1.html - Rahul Tripathi
3个回答

29

阅读手册页(ar命令)是一个不错的开端:

c

创建档案。如果请求更新,则始终创建指定的档案,但除非事先指定要创建它,否则会发出警告,使用此选项可避免。

r

将文件成员插入到档案中(并进行替换)。此操作与q操作不同之处在于,如果已存在的成员名称与正在添加的名称匹配,则删除它们。

s

向档案中写入一个对象文件索引,或更新现有的对象文件索引,即使对档案没有做出其他更改也是如此。您可以使用此修饰符标志与任何操作组合使用,也可以单独使用。在档案上运行“ar s”等效于在其上运行ranlib

POSIX比较,您可能会注意到一个区别:GNU ar使选项前缀“-”变为可选。

档案可以包含除目标文件以外的其他项(尽管这不常见)。包含目标文件的档案需要进行额外的维护(例如由ranlib执行),以使它们可供链接器使用。

根据 POSIX ar 中的 Rationale-s 选项起源于 BSD(System V 自动执行)。但是,仅运行 ranlib 是普遍做法(很少使用 -s)。有趣的是,POSIX 没有 ranlib,最终 -s 选项将替换在许多不同平台上编写的 makefile 中的 ranlib

24

阅读ar手册有所帮助,但我会详细解释一下。 当使用Makefile编译库时,最可能使用的命令是ar -rcsr的意思是,如果库已经存在,则用新文件替换库中的旧文件。 c的意思是,如果库不存在,则创建库。 s可以被视为“排序”(创建一个排序索引),使得可以更快地访问库中的函数。 因此,rcs可以被视为replace、create、sort的缩写。


4
这意味着“将文件成员插入档案(并替换现有的成员)”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接