我正在尝试交叉编译海伯利安在 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