dumpbin 报告静态库的错误目标架构
dumpbin reporting wrong target architecture for a static library
我不明白为什么 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 解释错误,还是我漏掉了一些重要的东西?
似乎没有 64bit
或 32bit
静态库类型。使用 objdump
和 dumpbin
对库执行一些断言后,两者都报告了正确的信息。
objdump
报告 一些 的目标文件是 64 位的,其他的是 32 位的。
dumpbin
做了同样的事情。
问题出自GMP构建系统;它将 64 位和 32 位目标文件嵌入到静态库中。
只要您不使用在 64 位目标文件之一中找到的任何工具,您的程序将 link 正确地运行到 32 位应用程序,这解释了 CFF 的输出。
要解决此问题,您必须联系 GMP 网站。
我不明白为什么 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 解释错误,还是我漏掉了一些重要的东西?
似乎没有 64bit
或 32bit
静态库类型。使用 objdump
和 dumpbin
对库执行一些断言后,两者都报告了正确的信息。
objdump
报告 一些 的目标文件是 64 位的,其他的是 32 位的。
dumpbin
做了同样的事情。
问题出自GMP构建系统;它将 64 位和 32 位目标文件嵌入到静态库中。
只要您不使用在 64 位目标文件之一中找到的任何工具,您的程序将 link 正确地运行到 32 位应用程序,这解释了 CFF 的输出。
要解决此问题,您必须联系 GMP 网站。