ar中的“rcs”选项有什么作用?

时间:2015-04-18 07:24:19

标签: c gcc static-libraries static-linking ar

我确实读过man文件,但没有帮助。 “rcs”似乎是传递给ar的最受欢迎的选项,但其含义并不是那么清楚。

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

3 个答案:

答案 0 :(得分:10)

阅读manual page(对于ar)是一个好的开始:

  

C

     

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

     

[R

     

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

     

取值

     

将对象文件索引写入存档,或更新现有索引   一,即使档案没有其他变化。你可以用   此修饰符标志可以是任何操作,也可以单独使用。正在运行" ar s"在存档上相当于在其上运行ranlib

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

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

根据POSIX ar中的 Rationale -s选项源自BSD(系统V 自动执行此操作)。但是,单独运行ranlib是主流做法(-s很少使用)。有趣的是,POSIX没有ranlib,最终-s选项将替换编写为在各种平台上运行的众多makefile中的ranlib

答案 1 :(得分:1)

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

答案 2 :(得分:1)

阅读ar的手册会有所帮助,但我将对其进行详细说明。 ar -rcs是使用Makefile编译库时最可能使用的命令。 r表示如果该库已经存在,请用新文件替换该库中的旧文件。 c表示创建不存在的库。 可以看到s的意思是对库进行“排序”(创建排序索引),以便对其进行索引并更快地访问库中的函数。 因此,rcs可以看作是replace, create, sort