2012年7月8日日曜日

hmatrixのインストール



Windows+Cygwin環境でHaskellをやりたくて,前回Haskell PlatformとMeadowのhaskell-modeまではやったけど,hmatrixのインストールで往生してた件,やっと情報を見つけた.英語だけどこれ(https://github.com/AlbertoRuiz/hmatrix/blob/master/INSTALL.md)が良いみたい.

1. gsl-lapack-windows.zipの入手

blas, lapack, gsl-0といったhmatrixに要求されているライブラリが全てまとめてあるとの事.ここ
https://github.com/downloads/AlbertoRuiz/hmatrix/gsl-lapack-windows.zip)からgsl-lapack-windows.zipをダウンロードできる.以下はダウンロードしたgsl-lapack-windows.zipを/usr/local/srcに置いたものとした説明

2. gsl-lapack-windowsを利用したhmatrixのインストール

$ cd /usr/local/src
$ unzip gsl-lapack-windows.zip
$ cabal update
$ cabal install hmatrix --extra-include-dirs="C:\cygwin\usr\local\src\gsl-lapack-windows" --extra-lib-dirs="C:\cygwin\usr\local\src\gsl-lapack-windows"

今度は「fatal error: gsl/gsl_odeiv2.h: No such file or directory」とか言われる.これはgsl-lapack-windowsがまだ古く,最新のhmatrix-0.14.0.1に含まれる一部のソースファイルがコンパイルできないことが原因.hmatrix-0.13.1.0を使えば良いらしい.

$ cabal install hmatrix-0.13.1.0 --extra-include-dirs="C:\cygwin\usr\local\src\gsl-lapack-windows" --extra-lib-dirs="C:\cygwin\usr\local\src\gsl-lapack-windows"

できたー!

3. hmatrixを使用する前に

喜んだのもつかの間,hmatrixを使ったプログラムをインタプリタで実行しようとするとdllが見つからないと怒られてしまう.gsl-lapack-windowsの中にあるblas.dll,lapack.dll,libgsl-0.dll,libgslcblas-0.dllの4つ全てをロードできる場所にコピーしないといけないのだが,64bitのWindowsの場合は”C:\Windows\System32”の中にコピーしても意味が無い.何とも分かりにくいのだが,64bitのWindowsの場合はdllの32/64bitに関わらず,コピー先は”C:\Windows\SysWOW64”.これは歴史的な経緯から来ているらしいが,とにかく64bit Windowsの場合はdllのコピー先がSysWOW64と覚えておけば良いみたい.


0 件のコメント: