2014年1月12日日曜日

MinGW + MSYS でLLVM 3.4

LLVM 3.4が出ました。LLVM(clang)はgccに比べてコンパイルが早い、エラー表示が分かりやすい、C++の新しい規格C++1y(C++14)への対応が早い、など利点が多く、注目されています。

LLVM 3.3まではWindowsでの動かし方が難しかったのですが、LLVM 3.4からはWindowsのインストーラが追加されているので、MinGWでの動作を試してみました。(MinGWのインストール方法はこちら

まずは、LLVMのダウンロードのページから、Clang for Windowsをダウンロードして実行します。



MinGW上で使うのであれば、インストール先フォルダをC:¥MinGWにすると良いと思われます。残りの部分は「次へ」で進んでいけばインストール完了です。

注意点として、LLVM 3.4のインストーラでは、標準のincludeフォルダが固定となっており、MinGWのincludeフォルダを見に行くようなので、MinGWをデフォルトのC:¥MinGW以外にインストールした場合には、コンパイルがうまく行かない可能性があります。

今回のバイナリはWindows Vista以降にしか対応していないようなので、WindowsXPで動かすために少し細工しました。clang.exe等の実行ファイルにおいて、Vista(バージョン6)以降でないと動かないようになっていたので、バイナリエディタで少しいじって下記のアドレス0x000130以降の"06 00 00 00 00 00 00 - 06 00 00 00"となっていたところを、 "05 00 00 00 00 00 00 - 05 00 00 00"と書きなおしています。clang++.exe等も同様に変更します。


 これで、hello worldのプログラム等をコンパイルして実行することができます。


しかし、clang++.exeを使用して、C++のプログラムをコンパイルして実行すると、libstdc++-6.dllで落ちてしまいます。どうもLLVMと現在(gcc-4.8.1)のlibstdc++は相性が悪いようです。そこで、gcc-4.6.2のlibstdc++-6.dllをダウンロードして、それを実行ファイルと同じ場所に置いて実行したところ、問題なく動作しました。

Fedora 20では"sudo yum install clang" で、LLVMのインストールは簡単ですが、まだバージョン3.3です。

0 件のコメント:

コメントを投稿