【问题标题】:How to open a .a file如何打开 .a 文件
【发布时间】:2011-02-11 19:35:16
【问题描述】:

我有一个小问题:我必须打开一个扩展名为.a 的链接器文件。我使用 Dev-C++。

【问题讨论】:

  • 你好 Ale,你能告诉我们你到目前为止的想法吗?
  • @Mgst:你想达到什么目的?

标签: c++ file linker .a


【解决方案1】:

.a 文件是对象 (.o) 文件的 ar 档案(类似于 zip 档案)。您可以使用ar 程序列出.a 文件中的文件:

ar t file.a

并提取所有文件:

ar x file.a

【讨论】:

    【解决方案2】:

    带有 .a 扩展名的文件是使用 Unix 文件命名约定的静态库。它们只不过是目标代码的索引集合。你不会打开它们(除非你有像 nmgdb 这样的工具可用,如果不一定是你可能想要的,这两者可以用图书馆做一些明智的事情) 告诉链接器在链接时使用它们。对于大多数链接器,将所有库(静态和动态/共享)放在链接器命令行上的主程序代码之后很重要,并且库的顺序也很重要。

    【讨论】:

      【解决方案3】:

      您真的是要打开该文件,还是希望链接它与您的代码?

      默认情况下,Dev-C++ 与 MinGW/GCC 编译器一起安装。如果存档不是专门为与 MinGW 一起使用而构建的(例如,它可能是 Cygwin 或 Linux 存档),您将无法将其链接到 MinGW 生成的代码。

      如果存档是 MinGW/GCC 兼容库,那么您只需将其链接到您的代码。在 Dev-C++ 中,您需要将存档添加到项目链接器选项中,方法是添加存档的完整路径(项目选项中有一个按钮),或者将存档放置在由 @987654323 定义的路径中@ 选项,然后添加 -l<archive> 选项。请注意,归档文件的 id 名为 libXXX.a,则 -l<archive> 选项将是 `-lXXX'; “lib”前缀和“.a”扩展名是隐含的。

      如果您只是想检查存档以确定它提供了哪些外部符号,则可以使用 nm 实用程序。如果您想提取单个目标文件,请使用ar,尽管我想不出您想要这样做的充分理由。

      【讨论】:

        【解决方案4】:

        试试fstream,或fstream file_op("c:\\test.a",ios::in);,别忘了加上fstream.h

        【讨论】:

        • 这也许是他要求的,但很可能不是他真正想要的。
        • @Clifford 但这是问题的问题,而不是答案。那为什么是-1?
        • @Draco Ater:我没有投反对票(你的假设)。有时可能会在没有足够的技术知识或正确的术语来表达清楚的情况下提出问题,我怀疑是这种情况。应该应用奥卡姆剃刀法则;问问自己“为什么有人(尤其是新手)希望打开一个存档,而不是通过链接以正常方式使用它?”。此外,他提到了正在使用的 IDE,这表明他需要知道如何在 IDE 中而不是在代码中使用库。阅读其他人的 cmets 和答案,看看为什么这可能不是答案。
        猜你喜欢
        • 1970-01-01
        • 2013-01-16
        • 2012-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多