此错误“仅支持 Win32 目标”是否来自错误的 cc1plus?

此错误“仅支持 Win32 目标”是否来自错误的 cc1plus?

我正在尝试交叉编译海伯利安在 64 位 Debian linux 上运行 32 位 Windows,但我在这样做时遇到了一些问题。

首先,为了尝试安装交叉编译器,我在linux上安装了mingw32。我不确定我是否安装了正确的版本,因为有很多类似的软件包。最终,我找到并阅读了 readme.txt,了解到 i686-w64-mingw32-gcc 应该是正确的 32 位 Windows C 编译器,但 i686-w64-mingw32-gcc 有两个版本,这可能是我正在寻找:i686-w64-mingw32-gcc 和 i686-w64-mingw32-gcc-win32。所以我选择使用i686-w64-mingw32-gcc-win32。

接下来,它抱怨无法找到 cc1plus。该文件的定位将我引导至 /usr/lib/gcc/x86_64-linux-gnu/5/。我继续在 /usr/bin 处创建到 /usr/lib/gcc/x86_64-linux-gnu/5/cc1plus 的软链接。

之后,它抱怨缺少 windows.h。我将其定位于 /usr/i686-w64-mingw32/include/。将 -I 选项添加到 CFLAGS 的路径后,我收到了各种奇怪的错误。其中有以下一项:

/usr/i686-w64-mingw32/include/_mingw.h:264:2: error: #error 仅支持 Win32 目标!

现在,我被困住了。我不确定我哪一步做错了。我怀疑这可能是我软链接的 cc1plus 错误,但如果错误的话我不知道如何获得正确的版本。

答案1

cc1plus链接的是普通的 C++ 编译器,而不是 Windows 交叉编译器。您永远不需要修复 GCC 的内部组件;该cc1plus错误表明还有其他问题。

对于您的情况,您需要安装mingw-w64( apt-get install mingw-w64)。这将安装适用于 Windows 的 C 和 C++ 交叉编译器以及相应的头文件和库。然后i686-w64-mingw32作为目标;i686-w64-mingw32-gcc应该可以正常工作。 (有关v.内容的详细信息,请参阅README.Debian中的;默认值应该适合您。)/usr/share/doc/gcc-mingw-w64-base-win32-posix

相关内容