1

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

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

我在谷歌中找到的只是关于检查是否使用了正确的编译器的建议。正如我所说,我有很好的 $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。

4

2 回答 2

0

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

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

于 2012-04-21T08:08:49.897 回答
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”。

于 2012-04-23T10:41:56.190 回答