在Ubuntu 16.04.3硬件OpenGL失败——不能初始化共享资源

65(30天)
首先,我的系统信息:
  • 4.13.0-26-generic # 29 ~ 16.04.2-Ubuntu SMP星期二2018年1月9日22:00:44 UTC x86_64 x86_64 x86_64 GNU / Linux
  • 清洁安装Matlab R2016b(64位)
  • 显卡:AMD / ATI皮特克恩PRO(房屋署的Radeon 7850)
香草安装问题
所以,我从命令行启动Matlab没有参数。我设置两个环境变量, LIBGL_DEBUG =详细 MESA_DEBUG = 1 ,了解任何bug。软件没有错误的开始。接下来,我发出一个简单的情节命令:
阴谋(1,- 1," b *’);网格;
Matlab创建成功的阴谋,但问题的一系列错误,说有一个低级图形错误。从命令行我看到以下信息:
libGL: pci id570年fd: 1002:6819,司机radeonsi
libGL: OpenDriver:尝试/usr/lib/x86_64-linux-gnu / dri / tls / radeonsi_dri.so
libGL: OpenDriver:尝试/usr/lib/x86_64-linux-gnu / dri / radeonsi_dri.so
libGL: dlopen /usr/lib/x86_64-linux-gnu / dri / radeonsi_dri。所以失败(/ opt /地方/ MATLAB / R2016b / bin / glnxa64 / . . / . . / sys / os / glnxa64 / libstdc + + . so。6:版本GLIBCXX_3.4.21”未找到(/usr/lib/x86_64-linux-gnu要求/ dri / radeonsi_dri.so))
有很多,但最终的结果是一样的:链接器无法加载与libstdc + +图形驱动程序。所以Matlab加载文件。为了解决这个问题,我重命名的有关图书馆Matlab迫使其使用系统库(包括版本 GLIBCXX_3.4.21 ):
cd/ opt /地方/ MATLAB / R2016b / sys /操作系统/ glnxa64
mvlibstdc + + . so。6libstdc + + . so。6。bak
mvlibstdc + + .so.6.0.20 libstdc + + .so.6.0.20.bak
修改安装问题
与c++库命名为迫使Matlab与系统库链接,我重启Matlab。环境变量仍集,所以任何libgl或台面错误应该报告给终端。程序开始后,在Matlab我收到以下错误:
com.jogamp.opengl。GLException: X11GLXDrawableFactory——不能初始化共享资源为X11GraphicsDevice [.x11类型、连接:1、unitID 0,处理0 x0,主人假,ResourceToolkitLock (obj 0 x7c1bc33e isOwner假,< 2 af5b1a 46860956 >[老板数0,qsz 0 <零>]]]
jogamp.opengl.x11.glx.X11GLXDrawableFactory SharedResourceImplementation.createSharedResource美元(X11GLXDrawableFactory.java: 326)
jogamp.opengl.SharedResourceRunner.run (SharedResourceRunner.java: 297)
java.lang.Thread.run(未知来源)
引起的:java.lang.NullPointerException
jogamp.opengl.GLContextImpl.makeCurrent (GLContextImpl.java: 688)
jogamp.opengl.GLContextImpl.makeCurrent (GLContextImpl.java: 580)
jogamp.opengl.x11.glx.X11GLXDrawableFactory SharedResourceImplementation.createSharedResource美元(X11GLXDrawableFactory.java: 297)
2
异常在线程启动类装入器. lang。在ternalError: XXX0 profile[1]: GL3bc -> profileImpl GL4bc !!! not mapped
com.jogamp.opengl.GLProfile.computeProfileMap (GLProfile.java: 2047)
com.jogamp.opengl.GLProfile.initProfilesForDeviceCritical (GLProfile.java: 1917)
com.jogamp.opengl.GLProfile.initProfilesForDevice (GLProfile.java: 1866)
com.jogamp.opengl.GLProfile.initProfilesForDefaultDevices (GLProfile.java: 1835)
com.jogamp.opengl.GLProfile.access 000美元(GLProfile.java: 79)
com.jogamp.opengl.GLProfile 1.美元运行(GLProfile.java: 229)
java.security.AccessController。doPrivileged(本地方法)
com.jogamp.opengl.GLProfile.initSingleton (GLProfile.java: 215)
com.mathworks.hg.peer.JavaSceneServerPeer.initializeJOGL (JavaSceneServerPeer.java: 147)
com.mathworks.hg.peer.JavaSceneServerPeer。< clinit > (JavaSceneServerPeer.java: 117)
. lang . class。为Name0(Native Method)
. lang . class。为Name(Unknown Source)
com.mathworks.mde.desk.StartupClassLoader.loadClass (StartupClassLoader.java: 262)
com.mathworks.mde.desk.StartupClassLoader.access 900美元(StartupClassLoader.java: 25)
com.mathworks.mde.desk.StartupClassLoader 2.美元运行(StartupClassLoader.java: 248)
java.lang.Thread.run(未知来源)
另外,以下信息显示在终端输出:
libGL: pci id570年fd: 1002:6819,司机radeonsi
libGL: OpenDriver:尝试/usr/lib/x86_64-linux-gnu / dri / tls / radeonsi_dri.so
libGL: OpenDriver:尝试/usr/lib/x86_64-linux-gnu / dri / radeonsi_dri.so
libGL:使用DRI3屏幕0
这些消息不显示任何问题;它看起来像radeonsi_dri对象加载成功。当我试着上面的情节命令一样,在Matlab我收到以下消息:
抓住了意想不到的fl::除了::IInternalException
图中显示了一个空的形象;情节还没有创建。
其他的笔记
  • 我也尝试重命名libgcc_s.so.1图书馆在Matlab的目录,以便它使用系统版本,但这并不能改变什么。
  • 没有错误在我Xorg.0 (EE)。日志文件
  • 我成功的基准测试OpenGL和视频卡glmark2,即,OpenGL与硬件accelleration在我的机器上运行很好,但Matlab有一些问题。
  • Matlab R2016b附带libGL.so.1.6.0(在R2016b / sys / opengl / lib / glnxa64),但我的操作系统版本libGL.so.1.2.0)。这导致一个问题吗?我试着重新命名libGL文件附带Matlab,迫使其使用系统版本,但错误消息仍是一样的。
  • libstdc + +修改文件,我可以运行软件Matlab openGL模式通过命令matlab -softwareopengl。策划工作很好,虽然台面写出警告/错误,“用户错误:GL_INVALID_ENUM glGetIntegerv (pname = GL_MAJOR_VERSION)”
12个评论

登录置评。

接受的答案

安德鲁•考克斯”class=
安德鲁•考克斯 2018年2月9日
编辑:安德鲁•考克斯 2020年5月5日
的解决方案 萨德 (下图),但如果你不是一个包括一些不必要的复杂性PsychToolbox用户,所以我总结了下面步骤的最小集合。步骤# 1(下图)只需要完成一次,虽然步骤2、3、4为每个版本的Matlab必须完成安装在您的计算机。
1。安装libjogl2库( 更新:不再需要使用各种版本 ):
#添加libjogl2-java
sudo恰当的更新是
sudoapt安装- y libjogl2-java
2。重命名c++标准库文件(从上面问题,重复)。这将确保图形驱动程序加载所需的标准库一样而不是Matlab与捆绑在一起的。
cdmatlabroot / sys / os / glnxa64美元
mvlibstdc + + . so。6libstdc + + . so。6。bak
mvlibstdc + + .so.6.0.20 libstdc + + .so.6.0.20.bak
3所示。改变 classpath.txt librarypath.txt 文件 美元MATLABROOT /工具箱/当地 。用我原来的路径,这个路径扩展 / opt /地方/ MATLAB / R2017b /工具箱/地方
  • classpath.txt,找到并注释掉以下两行:
美元matlabroot / java / jarext / gluegen-rt.jar
美元matlabroot / java / jarext / jogl-all.jar
用以下代码替换他们
/usr/share/java/jogl2.jar
/usr/share/java/gluegen2-rt.jar
  • librarypath.txt,在文件的末尾添加一个新行
/usr/lib/jni
4所示。根据上面提供的原始脚本,Matlab现在应该运行没有任何错误。然而,可以肯定的是,默认包含库不干涉,重命名以下图书馆 matlabroot / bin / glnxa64美元 :
cdmatlabroot / bin / glnxa64美元
sudomv libjogl_desktop。所以libjogl_desktop.so.bak
sudomv libgluegen-rt。所以libgluegen-rt.so.bak
sudomv libnativewindow_awt。所以libnativewindow_awt.so.bak
sudomv libnativewindow_x11。所以libnativewindow_x11.so.bak
最后,在 美元matlabroot /工具箱/地方/类路径中 重命名 3 p_jogl 文件:
cd美元matlabroot /工具箱/地方/类路径中
sudo3 p_jogl mv。jcp 3 p_jogl.jcp.bak
这是它!问题解决了!希望这些Xenial-Proposed包将推出稳定的分支在不久的将来。
2的评论

登录置评。

更多的答案(3)

Kaiyuh”class=
Kaiyuh 2018年3月30日
编辑:Kaiyuh 2018年3月30日
这是一个问题造成的不兼容的显卡驱动程序,我不会解释问题是什么。对我来说最简单和最好的解决方案是:
1。开放Matlab
2。输入“opengl(“保存”,“软件”)”
3所示。重新启动Matlab
这是做
7评论

登录置评。


萨德C”class=
萨德C 2018年4月2日
同意,改变OpenGL软件渲染并不是一个“解决方案”。
一些更新的当前状态修复这个错误:
  • 更新的功能版本libjogl2-java包已经接受到标准xenial-updates回购(…non-jargony:不再需要添加/删除非标准更新源)更新脚本在这里:https://github.com/czuba/sysconfig/raw/master/ubuntuFixJogl_ML2018a.sh
  • 不幸的是这些jogl错误坚持Matlab 2018 a。很难想象释放知道它会创建一个新版本的红色错误文本在启动时使用最广泛的Linux发行版上有…
  • 值得注意的是,必要的“会员”包来修复其他持万博1manbetx久matlab在Linux上的错误目前不是兼容Matlab 2018吗(截至2018年3月28日)
4评论
Royi Avital”class=
Royi Avital 2018年12月7日
编辑:Royi Avital 2020年3月14日
@Thad,
脚本(目前不添加非默认存储库)作品完美地与MATLAB R2018b Linux Mint 18.3。
Linux Mint 18.3官方的更新库安装存储库。
我需要做的就是把线检查Ubuntu。
谢谢你!

登录置评。


萨德C”class=
萨德C 2018年2月9日
编辑:萨德C 2018年2月9日
缺陷在jogl相关检测台面司机通过字符串匹配“镓”glRenderer字符串,而台面ppl显然最近实现的改变如何开源驱动程序/版报道。(…或粗糙的简介 这个错误报告 )
似乎是Matlab R2017b可能做一些基本类似,因为我安装似乎仍回落至3.0 OpenGL(兼容性),而不是使完整的4。x核心版本从我gfx卡。……tbd。
萨德。
保存后作为一个shell脚本,然后从终端在Ubuntu 16.04执行
(Andreas Widmann信贷的帖子肺结核论坛这个解决方案…我只是信使)
#! / bin / bash
#ubuntuFixJogl2018.sh
#Ubuntu 16.04 LTS
#安装从NeuroDebian Psychtoolbox、修复jogl安装& matlab链接
#
#脚本从安德烈亚斯Widmann基于建议的解决方案
#问题报告:
#https://groups.yahoo.com/neo/groups/PSYCHTOOLBOX/conversations/topics/22674
#
#肺结核。czuba 2018-02-09
#验证电脑运行Debian的导数
如果!命令- v dpkg & > / dev / null;然后
回声“这个脚本是运行在一个Ubuntu系统”
退出1
fi
cd$ HOME
#全球变量
MATLABROOT =“/ usr /地方/ MATLAB / R2017b”#根据需要更新您的Matlab版本/位置
TOOLROOT =“$ HOME / MLtoolbox”
回声“你是登录用户用户“美元
回声“matlab工具箱将被安装在TOOLROOT美元”
#配置
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#添加通过NeuroDebian Psychtoolbox-3安装存储库()
#——copy-pastaUbuntu 16.04的所有软件存储库
#- - - - - -不同的操作系统选项见:http://neuro.debian.net/install_pkg.html?p=matlab-psychtoolbox-3-nonfree
wgeto http://neuro.debian.net/lists/xenial.us-nh.full | sudo三通/etc/apt/sources.list.d / neurodebian.sources.list
sudoapt-key副词——recv-keys keyserver hkp: / / pool.sks-keyservers.net: 80 0 xa5d32f012649a5a9
sudo恰当的更新
#安装psychtoolbox
sudoapt安装- y matlab-psychtoolbox-3-nonfree
#添加为Matlab工具箱目录
sudomkdir - v - m 777“TOOLROOT美元”
sudo乔恩- v“$ USER”:“$ USER”“TOOLROOT美元”
#符号链接默认PTB ~ / MLtoolbox安装位置
sudoln - v - s /usr/share/psychtoolbox-3 TOOLROOT美元/ Psychtoolbox # def PTB neurodebian硬编码的位置
#修复在Matlab jogl错误(截止2018年2月7日)
# # # # # # # # # # # # # # # # # # #
#(1)
#添加XENIAL-PROPOSED库(必要的截至2018年2月)
sudosh - c”呼应“黛比http://archive.ubuntu.com/ubuntu/ \
xenial-proposed限制主要的多元宇宙宇宙的\
> /etc/apt/sources.list.d / xenial-proposed.list
sudo恰当的更新是
#只有安装以下xenial-proposed !
#(你不想升级包与最新版本)
sudo apt安装- y libjogl2-java / xenial-proposed
#sudoapt安装- y libjogl2-jni / xenial-proposed #这是包含在xenial-proposed libjogl2-java
#删除XENIAL-PROPOSED库
sudorm /etc/apt/sources.list.d / xenial-proposed.list
sudo恰当的更新是
# # # # # # # # # # # # # # # # # # #
#(2)
#改变的类路径中。txt和librarypath。txt文件MATLABROOT美元/工具箱/当地。
#
#classpath.txtfind and comment or delete the following two lines (~line 450):
# $MATLABROOT / java / jarext / gluegen-rt.jar
# $MATLABROOT / java / jarext / jogl-all.jar
#添加:
#/usr/share/java/jogl2.jar
#/usr/share/java/gluegen2-rt.jar
#
#librarypath.txtadd at the end of the file (incl. a newline):
#/usr/lib/jni
# # # # # # # # # # # # # # # # # # #
#(3)
#现在它应该已经工作。可以肯定的是,MATLAB包括库
#不会影响我另外更名为以下图书馆matlabroot / bin / glnxa64:
#libjogl_desktop.so
#libgluegen-rt.so
#libnativewindow_awt.so
#libnativewindow_X11.so
#哪一个现在提供的软件包安装在(1)。
cdMATLABROOT / bin / glnxa64美元
sudomv - v。/ libjogl_desktop。所以。/ libjogl_desktop.so.bak
sudomv - v。/ libgluegen-rt。所以。/ libgluegen-rt.so.bak
sudomv - v。/ libnativewindow_awt。所以。/ libnativewindow_awt.so.bak
sudomv - v。/ libnativewindow_x11。所以。/ libnativewindow_x11.so.bak
#
#matlabroot /工具箱/地方/类路径我另外重命名
#3 p_jogl.jcp
#被美国舒尔不添加回类路径中再生。
cd美元MATLABROOT /工具箱/地方/类路径中
sudo/ 3 p_jogl mv - v。jcp。/ 3 p_jogl.jcp.bak
printf
# # # # # # # # # # # # # # # # # # #
#肺结核安装& jogl错误修复安装
# # # # # # # # # # # # # # # # # # #
#
#必须手动应用Matlab安装以下编辑w /
#确定路径\ MATLABROOT美元、火了Matlab,然后输入
#matlabroot
#命令窗口。
#
# # # # # # # # # # # # # # # # # # #
#改变的类路径中。txt和librarypath。txt文件\ $ MATLABROOT /工具箱/当地。
#
#classpath.txtfind and comment or delete the following two lines (~line 450):
#\美元MATLABROOT / java / jarext / gluegen-rt.jar
#\美元MATLABROOT / java / jarext / jogl-all.jar
#添加:
#/usr/share/java/jogl2.jar
#/usr/share/java/gluegen2-rt.jar
#
#librarypath.txtadd at the end of the file (incl. a newline):
#/usr/lib/jni
# # # # # # # # # # # # # # # # # # #
2的评论
Sushen Joshi”class=
Sushen Joshi 2019年1月15日
你好,
当我试图做上面的第一步,在运行第一” sudo apt更新- y”,我有错误在终端
艾凡:存储库“http://archive.ubuntu.com/ubuntu/xenial-proposed限制释放”没有释放文件。
护士:从这样一个库更新不能安全地完成,因此默认情况下禁用。
护士:看到apt-secure(8)从存储库中创建和用户配置细节。
因此,我使用了选项“deb(信任= yes)”,而不是在sources.list。d文件。后,当我再次跑(1日)“sudo apt - y”更新,我得到以下错误,我不能一步也走不动了。
知道如何解决这个问题吗?我没有完成所有的步骤来解决的主要问题。

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!