首页 文章

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

提问于
浏览
0

我正在尝试在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

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

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

  • 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” .

相关问题