2009年1月25日日曜日

Mac: liboctave C++の使い方

C++において,Octaveのliboctaveを使用する方法

■ 参考サイト
京都大学の川嶋さんのホームページ
プログラミング liboctave (C++)
コンパイルするファイル間の依存性はできるだけ減らそう 〜liboctaveへん〜

■ HelloOctaveWorld.c
#include <iostream>
#include
<octave/config.h>
#include <octave/Matrix.h>

using namespace std;
int main()
{
 Matrix m(2, 2, 1.0);
 cout
<< "Hello octave! " << endl << m;
 return 0;
}


■ makefile
#%%%%%%%%%%%%%%%%%%%%*%%%%%%%%%%%%%%%%%%%%
# makefile
#%%%%%%%%%%%%%%%%%%%%*%%%%%%%%%%%%%%%%%%%%

OCTAVE_ROOT = /Applications/Octave.app/Contents/Resources
OCTAVE_INCS = -I$(OCTAVE_ROOT)/include/octave-3.0.3
OCTAVE_LIBS = -L$(OCTAVE_ROOT)/lib

PROG = a

CFLAGS = $(OCTAVE_INCS)
LDFLAGS = $(OCTAVE_LIBS)/octave-3.0.3 -loctave -lcruft $(OCTAVE_LIBS) -lreadline -ldl -lfftw3

C_SOURCE = HelloOctaveWorld

OBJ = $(C_SOURCE).o

all: $(OBJ)
g++ -o $(PROG) $(OBJ) $(LDFLAGS)

$(OBJ): $(C_SOURCE).c
g++ -c $(C_SOURCE).c $(CFLAGS)

(メモ)
・lfftw3は,フーリエ変換を使うためのライブラリらしい.
・LinuxとMacでは,includeやlibまでのパスが異なるので注意


■ ライブラリパス
DYLD_LIBRARY_PATH=/Applications/Octave.app/Contents/Resources/lib/octave-3.0.3
DYLD_LIBRARY_PATH=/Applications/Octave.app/Contents/Resources/lib:$DYLD_LIBRARY_PATH
export DYLD_LIBRARY_PATH

(メモ)
・bashにDYLD_LIBRARY_PATHを通しておく.
・Linuxでは,LD_LIBRARY_PATHとする.


■ その他の参考サイト
Octave-2.1.64 + ATLAS & FFTW の効果検証

GNU Octave 2.1.x 日本語マニュアル