linux 上的 matlab 无法绘制任何内容(无法加载 libstdc++.so.6:找不到版本“CXXABI_1.3.8”)

matlab on linux can't plot anything(can't load libstdc++.so.6: version `CXXABI_1.3.8' not found)

我是 运行 Fedora 24 上的 matlab R2016a,我无法使用 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);

我也看到了 How to fix: [program name] /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8' not found (required by [program name]) 但这并没有帮助。

我在那个版本的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_ matlab/bin" 文件夹及其隐藏)并取消注释所有行(其中有几行):

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

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

To always use the OpenGL libraries shipped with MATLAB uncomment the next line.

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

替代修复:

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

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

我试过了,效果很好。

以下人员在 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 一切正常。

编辑。将其添加到桌面条目

您必须 make/edit 一个包含以下内容的 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。效果很好。