dumpbin报告静态库的错误目标体系结构

时间:2015-02-20 18:24:06

标签: c static-libraries cpu-architecture gmp dumpbin

我不明白为什么dumpbin在Visual Studio命令行上执行以下操作时返回x64:

dumpbin libgmp.lib /HEADERS |more

这是在Cygwin 32位版本下编译的GMP库,具有以下构建配置:

./configure --host=i386 ABI=32

构建系统为指定的主机成功编译和构建了所有文件。但是,dumpbin仍然报告.a或.lib适用于64位架构。

请注意,输出静态库是libgmp.a,但我将其扩展名更改为.lib并将其与我的Visual Studio项目链接,没有任何问题。

另一个重要注意事项:将libgmp.lib与32位程序链接正常,并生成一个PE32文件,如CFF Explorer所报告。

这是一个dumpbin解释错误,还是我错过了一些重要的东西?

1 个答案:

答案 0 :(得分:0)

似乎没有64bit32bit静态库类型。在使用objdumpdumpbin对库执行某些断言后,两者都报告了正确的信息。

objdump报告目标文件的某些为64位,其他为32位。 dumpbin做了同样的事情。

问题从GMP构建系统中解脱出来;它将64位和32位目标文件嵌入到静态库中。

只要您不使用其中一个64位目标文件中的任何设施,您的程序将正确链接到32位应用程序,这解释了CFF的输出。

要解决此问题,您必须联系GMP网站。