2015/12/17
Msys2 + MinGW-w64 メモ
ちょっと試してみてるので作業メモ。
- msys2に入ってくるmingw64_shellなどのバッチファイルが $(msys-install-dir)/mingw64/bin をPATHに入れるようになってるので、mingw64がそこに入るように展開するのが良さげ。例えばmsys2のインストールディレクトリをデフォルトの
C:\msys64
にした場合、mingw-w64を展開するディレクトリを同じくC:\msys64
と指定すればC:\msys64\mingw64
に下に入ってくれるので好都合。(こうするとmingw-w64がC:\msys64
直下にもバッチファイルを若干置くけど、気になるほどではない) - mingw-w64はインストール時にいくつかオプションがある。とりあえずスレッドモデルwin32、例外sehで入れてみた。
- msys2は最初のインストーラで入るコマンドはパッケージマネージャ
pacman
を使うためのもので、autoconf
やmake
でさえ入らない。それらは必要に応じてpacman
で入れる。最初のステップは https://msys2.github.io/ のとおりにやるのが良い (pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
の後に一度msys2窓を閉じないと次のpacman -Su
でエラーが出る。) - Emacsもmingw-w64でプリコンパイルされたものを入れた: http://sourceforge.net/projects/emacsbinw64/ これは展開するとemacsサブディレクトリの下に全部入ってるので、
C:\msys64\opt\emacs
にまるっとコピーしてmsys2のPATHに/opt/emacs/bin
を追加しといた。
調査中項目
- msys2窓はminttyというのを使ってるがコマンドラインgoshがこれをターミナルと認識せずに
非インタラクティブモードに入ってしまう。
gosh -i
で起動すればとりあえずREPLには入れる。 - mingw64はsizeof(long)が4で、x86_64 上ではsizeof(long)==8を仮定してたところが引っかかる
- mingw64のランタイムはmingwのランタイムとposix系の定義が若干異なるので#ifdefがいくつか必要
Post a comment