如何打开 .a 文件

19

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


你好Ale,你能展示一下你目前的进展吗? - KMån
2
@Mgst:你想要实现什么目标? - KMån
4个回答

33

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

ar t file.a

并提取所有文件:

ar x file.a

5

.a扩展名的文件是使用Unix文件命名约定的静态库。它们不仅仅是一组目标代码的索引集合。你不需要打开它们(除非你有像nmgdb这样的工具可用,它们都可以对库进行合理的操作,但可能不是你想要的),而是告诉链接器在链接时使用它们。对于大多数链接器来说,在链接器命令行上将所有库(包括静态和动态/共享库)放在主程序代码之后很重要,而库的顺序也很重要。


2
你真的是想要打开这个文件,还是希望将它与你的代码链接起来?
Dev-C++ 默认安装了 MinGW/GCC 编译器。如果存档不是专门为 MinGW 构建的(例如可能是 Cygwin 或 Linux 存档),则无法将其链接到 MinGW 生成的代码。
如果存档是一个 MinGW/GCC 兼容库,则只需将其链接到你的代码中。在 Dev-C++ 中,你需要将存档添加到项目链接器选项中,可以通过添加存档的完整路径(在项目选项中有一个按钮)或将存档放置在由 `-L

1
尝试使用 fstream,或者fstream file_op("c:\\test.a",ios::in);,别忘了包含fstream.h

3
也许那正是他所要求的,但很可能不是他真正想要的。 - Clifford
2
@Clifford 但这是问题的问题,而不是答案。那么为什么要-1? - Draco Ater
3
@Draco Ater: 我没有对它(你的假设)投反对票。有时候,一个问题可能由于缺乏足够的技术知识或正确的术语来清晰地表达而被问出来,我怀疑这是这种情况。应该应用奥卡姆剃刀原则;问自己,“为什么有人(特别是新手)希望 打开 存档而不是通过链接以正常方式使用它?” 此外,他提到了正在使用的IDE,这表明他需要知道如何在IDE中使用库而不是在代码中。阅读其他人的评论和答案,看看为什么这可能不是答案。 - Clifford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接