我确实读了man文件,但它没有帮助。rcs
似乎是传递给ar的最流行的选项,但我不太清楚其含义。
所以c
意味着创建一个新的归档,但为什么要使用r
呢?它似乎代表";替换";?s
选项将对输出做什么?
阅读手册页面(对于ar)是一个良好的开端:
c
创建存档。如果指定的存档当您请求更新时,不存在。但发出了警告除非您事先指定要创建它,否则使用此修饰符。
r
插入文件成员。。。归档(替换)。这operation与q的不同之处在于任何以前存在的成员如果它们的名称与正在添加的名称匹配,则会被删除。
s
将对象文件索引写入存档,或更新现有一个,即使没有对归档进行其他更改。您可以使用此修饰符标志可以与任何操作一起使用,也可以单独使用。在归档文件上运行"
ar s
"相当于在它上运行ranlib
与POSIX相比,您可能会注意到一个区别:GNU ar使前缀选项本身是可选的。
存档可以包含对象文件以外的其他项目(尽管这种情况并不常见)。包含对象文件的档案需要额外的维护(例如,由ranlib
完成),以使链接器可以使用这些档案。
根据POSIX ar中的基本原理,-s
选项起源于BSD(System V自动执行)。然而,运行ranlib
本身是主流做法(很少使用-s
)。有趣的是,POSIX没有ranlib
,最终-s
选项将取代为在各种平台上运行而编写的大量makefile中的ranlib
。
阅读ar
的手册会有所帮助,但我会更详细地解释它。ar -rcs
是使用Makefile
编译库时最可能使用的命令。r
表示,如果库已经存在,请用新文件替换库中的旧文件。c
表示如果库不存在,则创建该库。s
的意思是对库进行"排序"(创建的排序索引),这样它将被索引,并更快地访问库中的函数。因此,rcs
可以看作是指replace, create, sort
。
这意味着"将文件成员…插入存档(替换)。">