我确实读过man文件,但没有帮助。 “rcs”似乎是传递给ar的最受欢迎的选项,但其含义并不是那么清楚。
所以“c”意味着创建一个新的档案,但为什么要使用“r”?哪个似乎代表“替换”? “s”选项对输出的作用是什么?
答案 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
。