解决Matlab在Linux下无法使用hardware OpenGL的问题

news/2024/10/17 20:28:59/

解决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.NullPointerExceptionat 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。


Ref 1.
Ref 2.
Ref 3.


http://www.ppmy.cn/news/59373.html

相关文章

麓言信息设计师作品集从0到5怎么做才能顺利找到工作?

作品集整体定位与风格设计最近我在看室内设计的案例&#xff0c;有中式、北欧、现代、轻奢、美式、地中海等等&#xff0c;通过这些风格描述相比大家对风格有了一定的印象&#xff0c;那么如果让你设计自己的作品集&#xff0c;你是否可以让他有属于你自己的风格呢&#xff1f;…

深入了解在 AWS 中存储应用程序参数的最佳方式

许多应用程序现在托管在公共云平台上&#xff0c;因此必须利用云来存储其数据和应用程序参数。在最受欢迎的云提供商中&#xff0c;亚马逊网络服务&#xff08;AWS&#xff09;是使用最广泛的。虽然 AWS 提供了许多用于存储应用程序参数的解决方案&#xff0c;但了解哪个选项最…

利用通信基础设施提高电网的稳态稳定性(Matlab代码实现)

目录 1 概述 2 稳态稳定性分析 2.1 系统模型 2.2 稳态稳定性 2.3 问题说明 3 仿真结果 4 Matlab代码 1 概述 随着电力系统的复杂性和规模的增加&#xff0c;电力系统的有效控制变得越来越困难。我们提出了一种自动控制策略&#xff0c;该策略基于通过通信基础设施获得的…

Java 基础进阶篇(四)—— 权限修饰符、final 关键字与枚举

文章目录 一、权限修饰符二、final 关键字2.1 final 作用2.2 final 修饰变量举例2.3 常量 三、枚举3.1 枚举的格式3.2 枚举的特征3.3 枚举的应用 一、权限修饰符 权限修饰符 用于约束成员变量、构造器、方法等的访问范围。 权限修饰符&#xff1a; 有四种作用范围由小到大 (p…

一起单测引起的项目加载失败惨案 | 京东云技术团队

作者&#xff1a;京东科技 宋慧超 一、前言 最近在开发一个功能模块时&#xff0c;在功能自测阶段&#xff0c;通过使用单测测试功能的完整性&#xff0c;在测试单测联通性使用到静态方法测试时&#xff0c;发现单测报错&#xff0c;通过查阅解决方案发现需要对Javaassist包进…

题目:16版.学生-成绩关联实体

1、实验要求 本实验要求&#xff1a;实现学生实体类与成绩实体类的关联访问。 1-1. 创建工程并配置环境&#xff1a; 1-1.1. 限制1. 工程取名&#xff1a;SE_JAVA_EXP_E023。 1-1.2. 限制2. 创建包&#xff0c;取名&#xff1a;cn.campsg.java.experiment。 1-2. 创建成绩实体类…

边学边记——数据结构☞和搜索有关的数据结构(搜索树,Set,Map,哈希表)

目录 模型 一、搜索 1. 场景 2. 搜索树 2.1 概念 2.2 查找 2.3 插入 2.4 删除 2.5 实现 2.6 性能分析 2.7 和Java的关系 二、Set 1. 常见方法 2. 注意 三、Map 1. 关于Map.Entry的说明,> 2. Map的常用方法说明 3. 注意 四、哈希表 1. 概念 2. 冲突 2…

女朋友说总是记不住Git命令,怎么办?安排!

如果你也和我女朋友一样总是忘记Git命令&#xff0c;觉得记忆Git命令是很枯燥和麻烦的事情。我写了一个包含了40 条常用Git命令的清单。你一定要收藏起来&#xff0c;当你忘记Git命令的时候&#xff0c;就可以打开来查看啦&#xff01;&#xff01;&#xff01; 1.初始化本地仓…