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

26 views (last 30 days)
Sosuke Imamura
Sosuke Imamura on 2 Nov 2018
Commented: 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)

Accepted Answer

Kojiro Saito
Kojiro Saito on 2 Nov 2018
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
Sosuke Imamura
Sosuke Imamura on 3 Nov 2018
解決できました。度々わかりやすくご回答頂きありがとうございます。

Sign in to comment.

More Answers (0)

Categories

Find more on スタンドアロン アプリケーション in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!