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