21

我确实阅读了 man 文件,但它没有帮助。rcs似乎是传递给 ar 的最流行的选项,但对我来说含义不是很清楚。

所以c意味着创建一个新的存档,但是为什么要使用r?这似乎代表“替换”?该s选项将对输出做什么?

4

3 回答 3

24

阅读手册页(对于 ar)是一个好的开始:

C

创建存档。当您请求更新时,如果指定的存档不存在,则始终会创建它。但是会发出警告,除非您事先指定您希望通过使用此修饰符来创建它。

r

将文件成员... 插入存档(带替换)。此操作与 q 的不同之处在于,如果先前存在的成员的名称与正在添加的成员匹配,则将删除任何先前存在的成员。

s

将目标文件索引写入存档,或更新现有索引,即使没有对存档进行其他更改。您可以将此修饰符标志与任何操作一起使用,也可以单独使用。在存档上运行 " ar s" 相当于在其上运行ranlib

POSIX相比,您可能会注意到一个区别:GNU ar 使“-”前缀选项本身是可选的。

档案可以包含除目标文件之外的其他项目(尽管这并不经常这样做)。包含目标文件的档案需要额外的维护(例如,由 完成ranlib)以使它们可供链接器使用。

根据POSIX ar 中的基本原理,该选项源自-sBSD(System V自动执行此操作)。然而,独自运行是流行的做法(很少使用)。有趣的是,POSIX 没有,最终该选项将替换为在各种平台上运行而编写的大量 makefile。ranlib-sranlib-sranlib

于 2015-04-18T11:38:09.943 回答
10

阅读手册以获得ar帮助,但我会更详细地解释它。 是您在使用 a编译库 ar -rcs时最可能使用的命令。表示如果库已经存在,请将库中的旧文件替换为新文件。 表示如果库不存在则创建库。 可以看成是对库进行“排序”(创建排序索引)的意思,这样会被索引并更快地访问库中的函数。因此,可以看成是 的意思。Makefilercsrcsreplace, create, sort

于 2018-07-02T02:25:16.010 回答
2

这意味着“将文件成员...插入存档(带替换)。”

于 2015-04-18T07:27:02.480 回答