linux上的matlab can';无法绘制任何内容(无法加载libstdc+;+;.so.6:version`CXXABI_1.3.8';未找到)

linux上的matlab can';无法绘制任何内容(无法加载libstdc+;+;.so.6:version`CXXABI_1.3.8';未找到),linux,matlab,plot,fedora,Linux,Matlab,Plot,Fedora,我正在Fedora 24上运行matlab R2016a,无法使用plot命令 这是我得到的错误: 使用gca时出错 设置“轴”的“父”属性时: 无法加载 “/usr/local/MATLAB/R2016a/bin/glnxa64/libmwosgserver.so”: /usr/local/MATLAB/R2016a/bin/glnxa64/./../sys/os/glnxa64/libstdc++.so.6: 未找到版本“CXXABI_1.3.8”(为/lib64/libGLU.so.1所需

我正在Fedora 24上运行matlab R2016a,无法使用plot命令

这是我得到的错误:

使用gca时出错

设置“轴”的“父”属性时:

无法加载
“/usr/local/MATLAB/R2016a/bin/glnxa64/libmwosgserver.so”:
/usr/local/MATLAB/R2016a/bin/glnxa64/./../sys/os/glnxa64/libstdc++.so.6:
未找到版本“CXXABI_1.3.8”(为/lib64/libGLU.so.1所需)

新建绘图(第73行)中出现错误

我也看到了
这也没用。

我对那个版本的matlab和fedora也有同样的问题。似乎matlab在启动时将自己的库路径预先设置为LD_library_PATH

您可以使用启动matlab,并告诉它使用正确版本的libstdc++,方法如下: LD_PRELOAD=/usr/lib64/libstdc++.so.6 matlab-desktop

我所做的是在.bashrc文件中添加一个别名: 别名matlab='LD_PRELOAD=/usr/lib64/libstdc++.so.6 matlab-desktop'


希望有帮助

我所做的是编辑了一个名为.matlab7rc.sh的文件(位于“path_to_umatlab/bin”文件夹及其隐藏位置),并取消了所有行的注释(其中有几行):

LDPATH\u前缀='$MATLAB/sys/opengl/lib/$ARCH'

文件中说明了以下内容,用于取消对此行的注释

要始终使用MATLAB附带的OpenGL库,请在下一步取消注释 线路

虽然它确实起到了作用,但我很好奇,使用MATLAB附带的OpenGL是否会降低性能,以及与@joe_st_amand的答案相比,这种方法的总体效果如何。

备选修复方案:

重命名libstdc++.so.6库文件,使MATLAB无法找到它,并强制使用系统版本的库。该文件位于matlabroot/sys/os/glnxa64中/

资料来源:


我试过了,效果很好。

以下是在fedora 28 scientific中使用的

> 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。效果很好

这也解决了一个问题,即当您试图退出时,MATLAB不会关闭,而是永远停止并说“忙”。从这里开始()但在我的例子中也与Ubuntu 16.10相关。
[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