カタベログ

IT技術に関するブログを書きたい.食べ物関連はInstagramをご参照の事.

Mac(OS X SnowLeopard)でIT++を使う

独立成分分析(Independent Component Analysis : ICA)の勉強をして,いざ自らの手で実装しようと思ったが,「待てよ・・・C++用のICAを関数として含むライブラリがあるんじゃないか?いや,あるだろう.」ということに実装前に気が付いた.実に気付くのが遅かった.
で,調べてみると本当にあった.IT++(アイティープラスプラス)というものだ.

インストール

・・・の前に,自分の環境を提示しておこう.

OS : Mac OS X 10.6.4
プロセッサ:Intel Core 2 Duo 2[GHz]
メモリ:DDR-3 2GB
コンパイラi686-apple-darwin10-g++-4.2.1

configure実行前

残念な事に,FinkMac Portsでは提供されていないので,手動でインストールしなければならない.
インストールをする前に,必ずRead MeとInstallを読んだ方が良い.
これが今回の俺の得た一番の教訓である(
それらによると,Fortranの処理系(g77,又は最新のもの),ATLAS(Macの場合),FFTW(最新のもの)が必要だそうだ.
自分は今回,Fortranの処理系はg95にした(Mac Portsではそれしか手に入らなそうだから).
それ以外のものも全てMac Portsで手に入る.マジでMac Ports便利.

configureの実行からmakeまで

それぞれ必要なものをインストールし終えたら,makeをする前にconfigureを回してmakeするための下準備をしなければならない.
僕がconfigureを実行したとき,どうしてもFFTWを探し出してくれなかったので,オプションで以下のように指定した.
./configure --prefix="/opt/local" --with-fft=fftw3 --with-fft-include="/opt/local/include"
ちなみに,prefixは,インストールするディレクトリを指定するためのオプションである.
こうすると,見事にconfigureは正常に終了して,makeするための準備が整う.
あとは,make installするだけ.

その他インストールに関すること

とりあえず,makeが失敗したらmake cleanとmake distcleanすればいい.
atlasとか,その他の外部ライブラリが見つからない場合にも,オプションが用意されているのでRead MeやInstallを読むこと.
何が問題かを把握する為に,吐き出されたメッセージは念のために一からよく読んだ方が良い.
手間を惜しむと時間が無駄に過ぎる.

IT++を実際に使ってみる

無事,インストールも終了したので,早速,自分のプログラムに組み込んでみた.
ICAを使う上で必要なヘッダーファイルはitpp/signal/fastica.hです.
fastica.hについてのIT++のページのExampleに従ってプログラムを作ると・・・エラーが出ます.
fastica.hをエディタで開くと分かりますが,クラス名はFastICAではなく,Fast_ICAです.

そんなこんなで作ったプログラムをコンパイルするとき,単純に

g++ -o [実行ファイル名] [ソースファイル名]
ではUndefined Symbolとエラーが返されます(俺だけ?).
なので,-Lオプションでライブラリのディレクトリを指定し,-l(小文字のエル)で使用するライブラリ名を指定してあげなければなりません.
つまり,以下のような感じになると思います.
g++ -L/opt/local/lib -litpp -o [実行ファイル名] [ソースファイル名]
これで,コンパイルも通り,実行ファイルもできるはずです.