CentOS で GNU Octave をコンパイル
February 7, 2011
February 17, 2011
用意するもの
- CentOS 5
- 基本的な行列計算ライブラリ
- blas.tar.gz
- cblas.tar.gz
(なくてもいいかもしれない)
- lapack-3.3.0.tar.gz
- arpack96.tar.gz & patch.tar.gz
- qrupdate-1.1.1.tar.gz
- SuiteSparse 関連
- metis-4.0.tar.gz
- UFconfig-3.6.0.tar.gz
- AMD.tar.gz
- CAMD-2.2.2.tar.gz
- CCOLAMD-2.7.3.tar.gz
- COLAMD-2.7.3.tar.gz
- CHOLMOD.tar.gz
- UMFPACK.tar.gz
- CXSparse.tar.gz
- SuiteSparse-3.6.0.tar.gz
- その他
- fftw-3.2.1.tar.gz
(たぶん 3.2.2 でもいい)
- curl-7.21.3.tar.gz
- fltk-1.1.10-source.tar.gz
- ftgl-2.1.3-rc5.tar.gz
- glpk-4.45.tar.gz
- gperf-3.0.4.tar.gz
- qhull-2010.1-src.tgz
- GraphicsMagick-1.3.7.tar.gz
v.1.3.8 以降だと、make check で imread.m のテストの時に失敗する。
Maintainer ML 記事参照。
また、v.1.3.7 のファイルはウェブからは見えない。コマンドラインから
ftp でもらってくるのが安定していてよい。
- gnuplot 4.4.2
- 本体
- octave-3.2.4
または
octave-3.4.0
- 時間
- 試行錯誤を繰り返しながら、10時間くらいかかった。
最初からノーミスなら1時間くらいで終わるかもしれない。
要注意点
- 上のリストの上から順にインストール。
- 基本的な行列計算ライブラリやSuiteSparse 関連のコンパイルでは、
- Fortran コンパイラをそろえる (g77だったりgfortranだったりせず、統一する)
- Fortran でも C でも C++ でも、-fPIC 付きでコンパイルする
- configure にライブラリのパスを指定のには環境変数を使う
- そんなわけで、環境変数はとりあえず以下のように設定する。tcsh ユーザーは、
configure は bash スクリプトを書いて、その中で実行するのが安全かもしれない。
export CFLAGS="-I/path/to/local/include -fPIC"
export LDFLAGS=-L/path/to/local/lib
export F77=gfortran
export FFLAGS=-fPIC
- FFTW は double 版と float 版の両方がいるので、configure に --enable-single
を付けるのと付けないのと、両方でそれぞれ make, make install する。
- metis に関して
../liboctave/liboctave.so: undefined reference to `METIS_NodeComputeSeparator'
../liboctave/liboctave.so: undefined reference to `METIS_NodeND'
というようなエラーが出たら、
- octave 3.2.4 の場合:
そのコンパイルのコマンドラインをシェルスクリプトとしてコピーして、metis
を使うライブラリよりも後の順番の当りに -lmetis
を入れる。で、スクリプト実行。うまくいったらまた make。
- octave 3.4.0 の場合:
src/Makefile をいじって、-ldl を -ldl -lmetis に変える。で make。
数回やる必要がある、かもしれない。
- コンパイル中、warning はたくさん出る。
潰すパッチを書くと歓迎されるかもしれない。
- make check では arpack のテストで 1 の代わりに 1.000 になって fail するが、
もう1回やるとなくなる。
- 全体的に、なんとなくすっきりしないコンパイルな印象。
でも一応動くバイナリができる。