【问题标题】:What does the "rcs" option in ar do?ar 中的“rcs”选项有什么作用?
【发布时间】:2023-03-22 22:43:01
【问题描述】:

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

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

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    c

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

    r

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

    s

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

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

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

    根据 POSIX ar 中的 Rationale-s 选项起源于 BSD(System V 自动这样做了)。然而,运行ranlib 本身是流行的做法(-s 很少使用)。有趣的是,POSIX 没有ranlib,最终-s 选项将替换大量编写以在各种平台上运行的makefile 中的ranlib

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-02
        • 2012-08-03
        • 2020-11-13
        相关资源
        最近更新 更多