Gcc 交叉mingw编译失败,伪操作未知

Gcc 交叉mingw编译失败,伪操作未知,gcc,compiler-errors,mingw,cross-compiling,x86-64,Gcc,Compiler Errors,Mingw,Cross Compiling,X86 64,我正在尝试在redhat群集(x86_64主机)上设置cross mingw。我没有根访问权限,可用的mingw二进制文件也不起作用(糟糕的glibc版本,等等)。我将学习本教程: 我是从以下源代码编译的: 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 不幸的是,在处理了一些问题之后,我在教程中的ming

我正在尝试在redhat群集(x86_64主机)上设置cross mingw。我没有根访问权限,可用的mingw二进制文件也不起作用(糟糕的glibc版本,等等)。我将学习本教程:

我是从以下源代码编译的:

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。经过一段时间和一些已完成的Make recipes后,退出时出现以下错误:

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

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

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


我将尝试使用*x86_64-w64-mingw32-gcc-S*标志运行失败的命令,以自己发出汇编代码,然后将发出的汇编代码与*x86_64-w64-mingw32-as*汇编程序一起使用,比较是否发生类似错误。

好的,我成功地继续安装。我发现有SEH宏定义,但似乎不应该定义,因此条件代码失败。Quick hack解决了这个问题:

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

在这个解决方案之后,我成功地编译了mingw-crt,并进一步进行了下一步——“完成GCC”。

这些问题很难解决,至少根据我的经验是这样的。我可以建议您检查gas或as gcc最终使用的版本,因为它可能是本地版本。GNU C(gcc)版本4.7.0(x86_64-w64-mingw32)由GNU C版本4.1.2 20080704(Red Hat 4.1.2-46)、GMP版本5.0.4、MPFR版本2.4.2、MPC版本0.9Also编译,如果调用了错误的
-as
,传递
-v
以获取详细输出可能会提供线索。感谢您的回复。不幸的是,这不是线索(crt1.o中现在有asm):$x86_64-w64-mingw32-as-v lib64/crt1.o GNU汇编程序版本2.20.1(x86_64-w64-mingw32)使用BFD版本(GNU Binutils)2.20.1.20100303 lib64/crt1.o:汇编程序消息:lib64/crt1.o:713:错误:未知伪操作:
.seh_handlerdata'lib64/crt1.o:762:错误:未知伪操作:
.seh_handlerdata'