2013年11月12日火曜日

QtはMinGWのgcc4.8.1ではコンパイルできない

参考:https://qt-project.org/forums/viewthread/33370/
参考:http://stackoverflow.com/questions/18739688/compile-time-error-from-a-qt-file-expected-unqualified-id-before-token

ひとつはMinGWのバグのせい。io.hのoff64_t_を_off64_tに置換すれば解決する。
もうひとつはQtのバグのせい。MemoryBarrierという名前がWindowsのものとQtのものとで競合するため。Qt5.1.2とQt5.2では修正される予定。

しょうがないのでQt5.1.2か5.2がリリースされるまではQtをソースからビルドする場合にはQt4.8.5を使おう。
やり方は以下に以前書いた。
http://wirelessia-liberation.blogspot.jp/2012/12/windows764bitmingw-gcc47-qtsdk484.html

Qt4.8.5も無理でした。MinGWのバグのようです。
結局バイナリインストーラを使うしかないのか……

既にあるMinGW+Msys環境からMsysGitを使うシンプルなやり方

WindowsでGitを使おうとするとたいていMsysGitを使うことになるのだけれど、MsysGitにはMinGWが付属していて、既にMinGW環境がある場合にはちょっとややこしいことになる。
できれば既にあるMinGW環境でGitを使えるようにしたい。
mingw-getで入ればいいのだけれど、少なくともこの記事を書いている現在はできない。

参考:http://sourceforge.net/p/mingw/feature-requests/127/

上のリンクにすべて書いてあるけれど、改めてきちんと書き出してみる。

MsysGitをインストールする。Msysからしか使わない場合は最小構成でOK。
Program Files/MsysGit/bin/の中にあるmsys-1.0.dllを削除する。(削除しなかった場合は後述)
Windowsシステムの環境変数のPATHの末尾(というかMinGW/binより後)にProgram Files/MsysGit/binを突っ込む。

これで既にあるMinGW環境からgitコマンドが使えるようになる。
ただしgit commitでvimが起動しないのでgit commit -mで使うしかないようだ……
msys-1.0.dllを削除しないでおくとvimが起動しないままストップし、削除しておくとプロシージャエントリポイントが云々のエラーが出る。