为啥我的 (x86->64) windows 交叉编译器的编译失败?
Posted
技术标签:
【中文标题】为啥我的 (x86->64) windows 交叉编译器的编译失败?【英文标题】:Why is the compilation of my (x86->64) windows cross compiler failing?为什么我的 (x86->64) windows 交叉编译器的编译失败? 【发布时间】:2011-07-07 00:42:12 【问题描述】:我正在尝试在我的 windows 系统上构建一个交叉编译器 (x86->64),目标是 windows 64,但是我的软件目前依赖于开源库,这些库也有开源依赖项没有可用于编译的预构建二进制文件。这意味着如果我想要 64 位版本,我需要编译它们。
我已经安装了 MSYS 和 mingw,我还在将 mingw-w64 添加到组合中,以便我最终可以编译 64 位格式的库以与我的软件一起使用。我正在尽我所能using these instructions 遵循这些步骤,并且按照该页面上列出的顺序,我目前正在执行标题为“构建 GCC 核心交叉编译器”的步骤,但是当我尝试使用以下行进行编译时:
$ ../gcc-4.6.1/configure --target=x86_64-w64-mingw32 --enable-targets=all && make -j 6 all-gcc && make -j 6 install-gcc
我收到了output pasted here。我应该注意,我当然剪断了以前执行的命令,最后一个命令是在显示所有错误之前列出的最后一个命令。另外,我不知道这是否是由于 '-j 6' 参数引起的所有错误的原因,但在它之前的一切至少看起来是成功的。
出了什么问题,我该如何解决?
哦,期待一个潜在的建议;不,我不能只切换到 cygwin。
编辑:分别执行here's the output of the configure command、the output produced by make all-gcc
(no -j argument) 和config.log 之后就可以了。请注意,我没有事先运行make clean
,这可能会解释不同的结局,我没有这样做是为了节省时间来编写此更新,但我想我只是制作一个不同的编译文件夹并重新 -干净地执行它,希望在我等待响应时看到与以前相同的错误。
编辑 2:make all-gcc
再次按预期失败,这次the output 应该能帮助更多我希望。
非常感谢您的帮助。
【问题讨论】:
收到错误后,再次运行 make 不带 -j 选项以查看究竟是哪个命令生成它。查看错误,似乎汇编器在抱怨它无法识别的指令,因此您的工具链可能还没有准备好发出 x64 代码。 我已按照您的建议重新开始编译过程。你说的有点道理..但我觉得这很奇怪,因为在我看来,这一步的全部目的是编译能够完全做到这一点的编译器.. 【参考方案1】:您的config.log
表明构建过程将使用 x86_64-w64-mingw32/bin 中的二进制文件来处理 ar 等内容...这些仅供内部编译器使用,它们都应该在您的/mingw/bin 目录。我强烈建议在 mingw-w64-public 邮件列表上寻求帮助。
【讨论】:
我不知道你说的第一件事是什么,但我刚刚注册了邮件列表并发送了一封电子邮件。感谢您的建议!以上是关于为啥我的 (x86->64) windows 交叉编译器的编译失败?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 C++/QT 应用程序在 Linux x86_64 上的 nanosleep() 中崩溃?
为啥 x86-64 Linux 系统调用使用 6 个寄存器集?