web-dev-qa-db-ja.com

Linux上のmatlabは何もプロットできません(libstdc ++。so.6を読み込めません:バージョン `CXXABI_1.3.8 'が見つかりません)

Fedora24でmatlabR2016aを実行していますが、plotコマンドを使用できません。

これは私が得るエラーです:

_Error using gca_

_While setting the 'Parent' property of 'Axes':_

Can't load '/usr/local/MATLAB/R2016a/bin/glnxa64/libmwosgserver.so': /usr/local/MATLAB/R2016a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version 'CXXABI_1.3.8' not found (required by /lib64/libGLU.so.1)

Error in newplot (line 73)

_ax = gca(fig);
_

また、私は見ました 修正方法:[プログラム名] /usr/lib/x86_64-linux-gnu/libstdc++.so.6:バージョンCXXABI_1.3.8 'が見つかりません([プログラム名]に必要) =そしてそれは役に立ちません。

12
saiedmomen

私がしたことは、.matlab7rc.sh( "path_to_ matlab/bin"フォルダーとその非表示にある)というファイルを編集し、コメントを外したことです(いくつかあります)。

LDPATH_PREFIX='$MATLAB/sys/opengl/lib/$Arch'

この行のコメントを解除するためのファイルには、次のように記載されています。

MATLABに付属のOpenGLライブラリを常に使用するには、次の行のコメントを外します。

それは確かにトリックを行いましたが、MATLABに付属のOpenGLを使用するとパフォーマンスが低下するかどうか、そして一般的にこのアプローチは@joe_st_amandの答えとどのように比較されるのか興味があります。

14
saiedmomen

そのバージョンのmatlabとFedoraでも同じ問題が発生しました。 matlabは、起動時にLD_LIBRARY_PATHの前に独自のライブラリパスを追加しているようです。

でmatlabを起動し、次を使用して適切なバージョンのlibstdc ++を使用するように指示できます。LD_PRELOAD=/usr/lib64/libstdc ++。so.6matlab -desktop

私がしたことは、.bashrcファイルにエイリアスを追加することでした:alias matlab = 'LD_PRELOAD =/usr/lib64/libstdc ++。so.6matlab -desktop'

お役に立てば幸いです。

9
Joe St Amand

代替修正:

Libstdc ++。so.6ライブラリファイルの名前を変更して、MATLABがそれを見つけられず、システムのバージョンのライブラリを使用するように強制します。このファイルはmatlabroot/sys/os/glnxa64 /にあります

出典: https://in.mathworks.com/matlabcentral/answers/329796-issue-with-libstdc-so-6

試してみたところ、魅力のように機能しました。

0
Joseph

以下はFedora28Scientificで動作しました

> cd ~/usr/lib64
> ls libstd*

私にとっての出力は

libstdc++.so.6  libstdc++.so.6.0.25

だから私は~/.bashrcにディレクトリをlibstdc++.so.6.0.25にエイリアスを追加しました

> emacs ~/.bashrc

最後に次の行を書きます。

alias matlab='LD_PRELOAD=/usr/lib64/libstdc++.so.6.025  /your/dir/to/bin/glnxa64/MATLAB -desktop'

ここで、/your/dir/to/はMATLABインストールのディレクトリです。次に

> source ~/.bashrc

その後、ターミナルで> matlabを実行するだけで、すべて問題ありません。

編集。デスクトップエントリに追加

動作させるには、matlab.desktopファイルを次のように作成/編集し、.applicationsフォルダーに配置する必要があります。

[Desktop Entry]
Name=Matlab R2017a
Exec=LD_PRELOAD=/usr/lib64/libstdc++.so.6.0.25 /usr/local/MATLAB/R2017a/bin/matlab -desktop &
Icon=~/username/.icons/Matlab_Logo.png
Terminal=false
Type=Application
Categories=Development;Science;Education

デスクトップエントリから開くと、適切なlibstdcがロードされます。うまく機能します。

0
jealcalat