解决Matlab在Linux下无法使用hardware OpenGL的问题
1 报错信息
在命令行使用命令matlab -nodesktop -nosplash
启动Matlab时,出现如下报错:
MATLAB is selecting SOFTWARE OPENGL rendering.
在查阅ArchWiki Matlab OpenGL Acceleration栏目后,发现这是因为Matlab未启用OpenGL硬件加速,只启用了OpenGL软件加速造成的。
2 问题原因
问题原因:Matlab使用了自己的libstdc++.so
库,版本为6.0.25。
$ ll -a ~/MatlabR2021a/sys/os/glnxa64/libstdc++* # 输出: # -r-xr-xr-x 1 yann yann 45 Nov 15 2020 /home/yann/MatlabR2021a/sys/os/glnxa64/libstdc++.so.6 -> /home/yann/MatlabR2021a/sys/os/glnxa64/libstdc++.so.6.0.25
而系统中libstdc++.so
库版本与安装包自带的版本不同,版本为6.0.28:
$ ll -a /usr/lib/x86_64-linux-gnu/libstdc++* # 输出: # lrwxrwxrwx 1 root root 19 Apr 17 10:00 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.28 # -rw-r--r-- 1 root root 1.8M Jan 10 2021 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
3 解决方案
将Matlab中的libstdc++.so
链接到系统中的该库即可。
$ sudo ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 /home/yann/MatlabR2021a/sys/os/glnxa64/libstdc++.so.6
重启Matlab,发现该报错会自动消失。
如果重启后还是出现,可以在Matlab中使用opengl('save','hardware')
默认开启OpenGL硬件加速。
4 新的问题
修改后打开Matlab Gui可能会出现如下报错:
com.jogamp.opengl.GLException: X11GLXDrawableFactory - Could not initialize shared resources for X11GraphicsDevice[type .x11, connection :0, unitID 0, handle 0x0, owner false, ResourceToolkitLock[obj 0x76ddc7cd, isOwner false, <6876ff80, 5d5c50dc>[count 0, qsz 0, owner <NULL>]]] at jogamp.opengl.x11.glx.X11GLXDrawableFactory$SharedResourceImplementation.createSharedResource(X11GLXDrawableFactory.java:326) at jogamp.opengl.SharedResourceRunner.run(SharedResourceRunner.java:297) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:688) at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:580) at jogamp.opengl.x11.glx.X11GLXDrawableFactory$SharedResourceImplementation.createSharedResource(X11GLXDrawableFactory.java:297) ... 2 more
解决方案见ArchWiki Matlab OpenGL Acceleration。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了