Windows Vista の再インストールに伴いHaskellPlatform 2011.2.0.1をインストールしました。「wxHaskell をインストールする」と同じ手順でインストールしようとしたところトラブルがありましたので、メモしておきます。
- http://sourceforge.net/projects/wxwindows/files/2.8.12/ から wxMSW-2.8.12.zip をダウンロード、展開。以下のコマンドでコンパイルしますがエラーになります。
> cd wxMSW-2.8.12/build/msw > mingw32-make -f makefile.gcc BUILD=release MONOLITHIC=1 SHARED=1 UNICODE=1 c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../.. /mingw32/bin/ld.exe: out of memory allocating 28119168 bytes collect2: ld returned 1 exit status mingw32-make: *** [..\..\lib\gcc_dll\wxmsw28_gcc_custom.dll] Error 1
MONOLITHIC=0 にすればコンパイルは通りますが、次の段階でエラー・・・。
検索すると LD Memory Exhausted with MinGW's new GCC 4.5という記事を見つけました。TDM-GCC ならコンパイルできそうです。
- TDM-GCCについて調べてみます。
TDM版GCC-4に関してによるとTDM版のGCCには次の特徴があるそうです。
・より最新のGCC-4系バイナリが用意されている。 ・MinGW環境向けにビルドされている。 ・バグが独自に修正されていることがある。 ・pthreadやiconv等がサポートされている。
TDM-GCCをインストールしてwxWidgetsをコンパイルしてみます。
- TDM-GCCのtdm-gcc-4.5.2.exeをダウンロードしてインストールすると(標準ではC:\MinGW32へ)wxMSW-2.8.12のコンパイルに成功しました。
- cabal install wx で wxHaskell のインストールに成功。
- しかし、サンプルをコンパイルし、実行するとエラー。
hello.exe - エントリ ポイントが見つかりません --------------------------- プロシージャ エントリ ポイント __gxx_personality_v0 がダイナミック リンク ライブラ リ libstdc++-6.dll から見つかりませんでした。 ---------------------------
GHC が使用している mingw のlibstdc++-6.dllとTDM-GCCのlibstdc++-6.dll微妙に違うようです。
cabal update cabal install wxdirect --reinstall cabal install wxcore --reinstall cabal install wx --reinstall
サンプルをコンパイルすると正常に動作しました。