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。效果很好。
我是 运行 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。效果很好。