MATLAB Answers

0

MATLAB compilerで生​成したスタンドアロン​アプリケーションをl​inux環境上で実行​できません

Asked by Sosuke Imamura on 2 Nov 2018
Latest activity Commented on by Sosuke Imamura on 3 Nov 2018
linux環境でのコマンドライン上でスタンドアロンアプリケーションを実行した際に以下のようなメッセージが出て実行できません。
" error while loading shared libraries: libmwlaunchermain.so: cannot open shared object file: No such file or directory"
スタンドアロンアプリケーションはもちろんlinuxマシンにて作成しております。 複数のPCでコンパイル、ファイルの実行を試してみましたがいずれも同じようなメッセージが表示されました。テストに用いたプログラムは以下のような簡単なものです。
functioin test(a)
disp(a)

  0 Comments

Sign in to comment.

1 Answer

Answer by Kojiro Saito on 2 Nov 2018
 Accepted Answer

LinuxでMATLAB Runtimeを使う場合は、 こちらのドキュメントにあるとおり、LD_LIBRARY_PATHに Runtimeのインストールサブフォルダーであるruntime/glnxa64、bin/glnxa64、sys/os/glnxa64、sys/opengl/lib/glnxa64を追加する必要があります。
例えばR2018aのMATLAB Runtime (v94)を/usr/local/MATLAB/MATLAB_Runtime/v94にインストールした場合、~/.bashrcに
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/MATLAB/MATLAB_Runtime/v94/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v94/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v94/sys/os/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v94/sys/opengl/lib/glnxa64
と設定しておけば、ターミナルから
source ~/.bashrc
で.bashrcの設定を反映した後に、コンパイルしたアプリケーション(上記の場合test)を起動すれば
./test a
libmwlaunchermain.soの読み込みエラー無く実行できます。
もっと簡単なのは、run_が付くシェルスクリプトを実行する方法です。 コンパイル時にrun_test.sh というファイルが同時に作成されますので、
./run_test.sh <Runtimeのインストールパス> 引数
例:
./run_test.sh /usr/local/MATLAB/MATLAB_Runtime/v94 a
と実行すればアプリケーション実行時にLD_LIBRARY_PATHが動的に設定されてから実行されます。
コンパイル時にfor_redistribution_files_onlyディレクトリに作成されるreadme.txtに上記の内容が書かれていますので、合わせてご確認ください。
また、もし引数に数字を入れる場合がある場合は、コマンドラインの文字列から数字に変換するstr2numを入れて置いたほうが良いと思います。
function test(a)
a = str2num(a);
disp(a)

  1 Comment

解決できました。度々わかりやすくご回答頂きありがとうございます。

Sign in to comment.