【发布时间】:2011-02-11 19:35:16
【问题描述】:
我有一个小问题:我必须打开一个扩展名为.a 的链接器文件。我使用 Dev-C++。
【问题讨论】:
-
你好 Ale,你能告诉我们你到目前为止的想法吗?
-
@Mgst:你想达到什么目的?
我有一个小问题:我必须打开一个扩展名为.a 的链接器文件。我使用 Dev-C++。
【问题讨论】:
.a 文件是对象 (.o) 文件的 ar 档案(类似于 zip 档案)。您可以使用ar 程序列出.a 文件中的文件:
ar t file.a
并提取所有文件:
ar x file.a
【讨论】:
带有 .a 扩展名的文件是使用 Unix 文件命名约定的静态库。它们只不过是目标代码的索引集合。你不会打开它们(除非你有像 nm 或 gdb 这样的工具可用,如果不一定是你可能想要的,这两者可以用图书馆做一些明智的事情) 告诉链接器在链接时使用它们。对于大多数链接器,将所有库(静态和动态/共享)放在链接器命令行上的主程序代码之后很重要,并且库的顺序也很重要。
【讨论】:
您真的是要打开该文件,还是希望链接它与您的代码?
默认情况下,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,尽管我想不出您想要这样做的充分理由。
【讨论】:
试试fstream,或fstream file_op("c:\\test.a",ios::in);,别忘了加上fstream.h。
【讨论】: