2012-04-20 18 views
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のコンパイル中に1つで立ち往生いくつかの問題を管理した後、 - チュートリアルから "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:/home/zaluski/bin:/ var/fpwork/mingw/bin)、ログにx86_64-w64-mingw32-gccがあります。

+0

少なくとも私の経験では、これらの問題は解決するのが非常に難しいです。 * gas *または* as * gccのどのバージョンが使用されているのかを確認することをお勧めします。 – dsign

+0

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.9 –

答えて

0

[OK]をクリックしてインストールを続行しました。 SEHマクロが定義されていることがわかりましたが、そうではないと思われます。したがって、条件付きコードは失敗します。 「仕上げGCC」 - 私は成功したコンパイルmingwの-CRTすることができたし、次のステップにさらに進む。この後、溶液を

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

:クイックハックは、問題を解決しました。

0

クロスコンパイルの代わりにネイティブアセンブラが使用されている可能性があります。 * x86_64-w64-mingw32-as *が$ PATHにあるかどうか確認してください。

* x86_64-w64-mingw32-gcc -S *フラグを指定して失敗したコマンドを実行して、アセンブリコードを自分自身で発行し、* x86_64-w64-mingw32- *アセンブラとして。

+0

また、冗長な出力を得るために '-v'を渡すと、間違った' as'が呼び出されている場合の手がかりになるかもしれません。 –

+0

お返事ありがとうございます。 GNUアセンブラのバージョン2.20.1(x86_64-w64-mingw32)は、BFDを使用しています(現在、crt1.oにはasmがあります): $ x86_64-w64-mingw32-as -v lib64/crt1.o (GNU Binutils)2.20.1.20100303 lib64/crt1.o:アセンブラメッセージ: lib64/crt1.o:713:エラー:不明な擬似操作: '.seh_handlerdata ' lib64/crt1.o:762:エラー:不明疑似操作: '.seh_handlerdata ' –

関連する問題