交叉mingw编译因未知的伪操作而失败

时间:2012-04-20 13:52:28

标签: gcc compiler-errors mingw cross-compiling x86-64

我正在尝试在redhat群集(x86_64主机)上设置cross-mingw。我没有root访问权限,可用的mingw二进制文件不起作用(坏glibc ver等)。我正在阅读本教程:

http://sourceforge.net/apps/trac/mingw-w64/wiki/Cross%20Win32%20and%20Win64%20compiler

我正在编译以下源代码tarball:

binutils-2.20.1.tar.bz2
gcc-4.7.0.tar.bz2
gmp-5.0.4.tar.bz2
mingw-w64-v2.0.2.tar.gz
mpc-0.9.tar.gz
mpfr-2.4.2.tar.bz2

不幸的是,在已经处理了一些问题后,我在mingw-crt编译期间遇到了一个问题 - 从教程中“构建crt(Mingw-w64本身)”。我正在使用sysroot并且有适当的$ PATH。一段时间后退出并出现以下错误,并完成一些制作配方:

x86_64-w64-mingw32-ranlib lib64/libws2_32.a
x86_64-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I/home/zaluski/work/mingw-builds/mingw-w64-v2.0.2/mingw-w64-crt  -D_CRTBLD -I/var/fpwork/mingw/x86_64-w64-mingw32/include   -pipe -std=gnu99 -Wall -Wextra -Wformat -Wstrict-aliasing -Wshadow -Wpacked -Winline -Wimplicit-function-declaration -Wmissing-noreturn -Wmissing-prototypes -g -O2 -m64 -I/home/zaluski/work/mingw-builds/mingw-w64-v2.0.2/mingw-w64-crt/include -D_SYSCRT=1 -DCRTDLL=1 -c /home/zaluski/work/mingw-builds/mingw-w64-v2.0.2/mingw-w64-crt/crt/crtexe.c -o lib64/crt1.o -D__CRTDLL__ -U__MSVCRT__
{standard input}: Assembler messages:
{standard input}:713: Error: unknown pseudo-op: `.seh_handlerdata'
{standard input}:762: Error: unknown pseudo-op: `.seh_handlerdata'
make[3]: *** [lib64/crt1.o] Error 1

我在google中找到的所有内容都是关于检查是否正在使用正确的编译器的建议。正如我所说,我有好的$ PATH(/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: / opt / bin:/ usr / atria / bin:/ opt / UsageModel:/ home / zaluski / bin:/ var / fpwork / mingw / bin)并且日志中有x86_64-w64-mingw32-gcc。

2 个答案:

答案 0 :(得分:0)

可能正在使用本机汇编程序而不是交叉编译程序。检查* x86_64-w64-mingw32-as *是否在$ PATH中。

我会尝试使用* x86_64-w64-mingw32-gcc -S *标志运行失败的命令来自己发出汇编代码,然后通过使用带有* x86_64-w64-mingw32-as的发出的汇编来比较是否发生了类似的错误*汇编程序。

答案 1 :(得分:0)

好的,我设法继续进行安装。我发现已经定义了 SEH 宏但似乎不应该这样,因此条件代码失败了。快速破解解决了这个问题:

sed 's/#ifdef __SEH__/#ifdef __SEHWORKAROUND__/' -i mingw-builds/mingw-w64-v2.0.2/mingw-w64-crt/crt/crtexe.c

在此解决方案之后,我能够成功编译mingw-crt并进一步进行下一步 - “完成GCC”。