今日の一言
2010/10/16(Sat) 冷凍ポテトを買ったが油が無い [長年日記] 2:30現在曇 21℃
_ [Matlab][Ubuntu][Debian][FC][Linux][Windows][Mac][研究関係]MATLABのm-fileをコンパイルし、非Matlab環境でも動かせるようにする(基礎編)
参考:
・http://robotics.naist.jp/~min-d/p/index.php?MATLAB#ydbfa970
実行可能ファイルを生成する
hogehoge.mをコンパイルしたい場合、こんな感じでコマンドを打てばいい。
>> mcc -m hogehoge.m
これで、実行可能ファイル(./hogehoge)が生成される。
実行する
MATLAB環境,非MATLAB環境に関わらず、LD_LIBRARY_PATHの追加が必要となる。
MATLAB環境の場合
実行すると「./hogehoge: error while loading shared libraries: libmwmclmcrrt.so: cannot open shared object file: No such file or directory」てな感じでエラーが出るので、
$ find / -name libmwmclmcrrt.so
で、その共有ライブラリを探し、LD_LIBRARY_PATHの追加を行えばOK。(パスの通しかたは次の日記に記載)
何度か出てくることもあるが、それらをすべて追加すれば、無事に実行できるはず。
非MATLAB環境の場合
まず、以下のファイルを、すべて非MATLAB環境に移動させる必要がある。
mccコマンドで作成した実行ファイル「hogehoge」(拡張子無し)
実行ファイルと共に生成された「run_hogehoge.sh」
$MATLABROOT\toolbox\compiler\deploy\<Arch>\MCRInstaller.bin
ここで、「$MATLABROOT」は、MATLAB インストールディレクトリを、<Arch>はOSを示す。
その後、非MATLAB環境にて、MCRInstaller.binを実行しMCRInstallerのインストールを行う。
# ./MCRInstaller.bin
後は、MCRInstallerのインストールディレクトリを指定して「run_hogehoge.sh」を実行すれば、非MATLAB環境でも、スタンドアローンに実行できるはず。
$ ./run_hogehoge.sh MCRROOT/<MCRversion>
ここで、MCRROOTは、MCR Installerのインストールディレクトリを示し、<MCRversion> は、MCR のバージョンを示す。
自分の場合はこんな感じのコマンドで実行できた。
$ ./run_hogehoge.sh /opt/MATLAB/MATLAB_Compiler_Runtime/v710
以上!ガンバレ!
_ [Matlab][Ubuntu][Debian][FC][Linux][Windows][Mac]Linuxで、共有ライブラリにパスを通す方法(sh系)
参考:
・http://www.geocities.co.jp/CollegeLife-Labo/1513/matlab.txt
こんな感じのコマンドを打てばOK。
$ export LD_LIBRARY_PATH="/usr/local/MATLAB/R2009a/bin/glnx86/"
ログインする度に自動で設定したい場合は、各ユーザのホームディレクトリ配下にある、「.bash_profile」を開き、上記の
export LD_LIBRARY_PATH="/usr/local/MATLAB/R2009a/bin/glnx86/"
と言うのを書き加えればOK!
もし同じ環境変数の設定をサーバ内の全ユーザに対して指定したい場合は、「/etc/profile」を開き、末尾に
export LD_LIBRARY_PATH="/usr/local/MATLAB/R2009a/bin/glnx86/"
を加えればOK!
*各ユーザの .bash_profile の中に、ログイン後に /etc/profile ファイルを読み込むような記述があるらしい。
*パスを「追加」する場合には、以下のようにする。
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/matlab/bin/glnx86 $ export LD_LIBRARY_PATH