日頃、研究のための作業のほとんどをubuntu上で行っています。研究者の多くはunix系の環境で仕事をすることを好んでおり、
- macを使う。
- windowsでvmware等の仮想環境を作り、その中でLinux等を使う。
- windowsでcygwinを使う。
- Linux等をマルチブートで使う。
などいろいろあると思います。本当に素のwindowsで仕事をする人は少ない気がします。拙kvライブラリも一応Visual Studioでも動くもののunix系で開発している関係上やはりunix系OSが使いやすい気がします。研究室の学生を見ると、windowsでcygwinを使っている人が大半のようです。自分はLinuxを入れることを勧めているのですが、やはり不慣れなOSで生活するのはつらいようで。
さて、windows環境のままunix系コマンドを使えるようにするソフトウェアとしてはcygwinが有名で長く使われてきていますが、最近MSYS2という同様のソフトウェアのいい評判をよく耳にします。そこで、試しにちょっと使ってみました。
元々、cygwinの亜種でmingw+msysというwindows nativeのexeを生成するソフトウェアがあるのですが、それの後継という位置づけで、
- 比較的アップデートが早く、最新のソフトウェアが使える。
- Arch Linuxで使われているpacmanというパッケージマネージャが使える。
という特徴があります。
上のページを見ながら、試しにインストールしてみました。インストール先はwindows7 64bit。
pacmanパッケージマネージャの使い方は、以下の通り:
- pacman -Ss 名前 で検索。
- pacman -S 名前 でインストール。
- pacman -R 名前 で削除。
さて、ややこしいことに、MSYS2はmsys2, mingw32, mingw64の3種類のbinaryを含んでおり、それぞれインストール場所も分けられています。msys2は、(cygwinがそんな感じであるように)msys-2.0.dllというmsys2独自のDLLがリンクされており、MSYS2環境下でしか動かないbinaryです。mingw32, mingw64はそれぞれwin32, win64のbinaryで、単独で動作します。gcc等のコンパイラも3種あって、msys2コンパイラで生成したexeはmsys2のDLLに依存しますが、mingw32/64のコンパイラで生成されたexeは単独で動作します。また、スタートメニューに登録された起動バッチファイルはmsys2_shell.bat, mingw32_shell.bat, mingw64_shell.batの3種類あって、msys2_shell.batから起動するとmsys2なbinaryにしかパスを通しません。mingw32/64.batで起動すると、mingwとmsys2の両方のbinaryにパスが通され、mingwの方が先に登録されているので優先されます。なるべく全てのbinaryをwindows nativeにしたかったが、どうしても無理なものだけmsys2依存で作成している、ということだと思います。
自分は、mingw64_shell.batを常用することにしました。
いくつかパッケージを入れて開発環境を整えてみました。前述したようにgccは3種類ありますが、公式Wikiの"Contributing to MSYS2"にあるように
pacman -S base-devel
pacman -S msys2-devel
pacman -S mingw-w64-i686-toolchain
pacman -S mingw-w64-x86_64-toolchain
で主だった開発に必要なものは大体入ります。更に、
pacman -S vim
pacman -S mingw-w64-x86_64-boost
pacman -S openssh
あたりを入れてみました。
この環境でkvライブラリはちゃんとコンパイル出来ました。mpfrを使ったものも、-lmpfr -lgmpを付けるだけでOK。
アンインストールも試してみましたが、コントロールパネルからで普通にきれいさっぱり消せるようです。
gccは4.9.2、boostは1.57.0であり、sshの最近のバグも修正されるなど、最新の環境が楽に使えるのはとてもいいですね。しばらく注目していようと思います。