【问题标题】:What exactly does "ar" utility do?“ar”实用程序究竟是做什么的?
【发布时间】:2009-10-11 18:06:05
【问题描述】:

我不太明白 ar 实用程序在 Unix 系统上的作用。

我知道它可以以某种方式用于创建 c 库,但手册页告诉我的只是它用于从文件制作档案,这听起来类似于,例如,tar....

【问题讨论】:

  • 我试过手册页,但我不是很明智......但是谢谢。
  • 这是一个关于编程的问题 - 以及使用ar 命令制作库以供程序员在编程时使用。它不属于超级用户。

标签: c unix


【解决方案1】:

主要目的是获取单个目标文件 (*.o) 并将它们捆绑到一个静态库文件 (*.a) 中。 .a 文件包含一个索引,允许链接器快速定位库中的符号。

Tar 不会创建链接器可以理解的文件。

【讨论】:

  • 因果关系有点相反:最初的 unix 链接器被编写为使用“ar”实用程序来存储其库。直到后来,“tar”实用程序才开始流行,主要是因为与磁带设备更好的互操作性。
【解决方案2】:

ar 是一个通用存档器,就像tar。它只是“碰巧”主要用于创建静态库存档,这是它的传统用途之一,但您仍然可以将其用于通用存档,尽管tar 可能是更好的选择。 ar 也用于 Debian .deb 软件包。

【讨论】:

    【解决方案3】:

    没错,ar 是一个归档器。它只需要一组目标文件 (*.o) 并将它们放入您称为静态库的存档中。

    【讨论】:

    • ...因为tar 用于将文件存储到磁带(因此是't')。将库放在磁带上是没有用的 - 您必须等待操作员安装正确的卷,才能链接您的程序。
    【解决方案4】:

    它采用目标文件(.obj、.o 等)形式的代码并制作一个静态库(存档)。然后可以在与 ld 链接时包含该库以将目标代码包含到您的可执行文件中。

    看看Wikipedia article.中的示例用法

    【讨论】:

      【解决方案5】:

      您可能需要运行 man ar 以获取完整信息。 Here 是网络上的副本。

      引用:

      GNU ar 程序创建、修改和提取档案。一个 archive 是一个单独的文件,它包含一个文件中的其他文件的集合 使检索原始个体成为可能的结构 文件(称为档案成员)。

      ar 被认为是二进制实用程序,因为此类存档是 最常用作包含常用子例程的库。

      【讨论】:

        【解决方案6】:

        ar 专门用于目标代码的存档(或库); tar 用于任意文件的存档。任何人都猜到为什么 GNU 将这些称为“档案”,在其他环境中,此实用程序称为“图书馆员”,而生成的文件只是库。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多