许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  ANSYS ICEMCFD报libGL swrast_d错误怎么解决?驱动配置

ANSYS ICEMCFD报libGL swrast_d错误怎么解决?驱动配置

阅读数 5
点赞 0
article_banner

libGL error: failed to load driver: swrast 这行字弹出来的时候,ICEM CFD的图形窗口一片空白,鼠标能点但什么都看不到,控制台里还在刷 GLX 相关的报错。D:\ICEM\error_log\libGL_swrast.txt里记着这个报错的时间戳。

先看驱动。NVIDIA的机器上最常见的原因是Mesa的libGL和NVIDIA自己的OpenGL栈打架了,Mesa想加载swrast,NVIDIA的libGL却按自己的驱动布局走。验证一下当前哪个libGL在起作用,ldd查一下ICEM的可执行文件链接到了哪个libGL.so.1。装了NVIDIA驱动的话,/usr/lib/x86_64-linux-gnu/libGL.so.1通常是个软链接,指向nvidia的glx库。Mesa的libGL被优先加载了就会出swrast的报错。把/etc/ld.so.conf.d/里跟Mesa相关的配置删掉或者注释掉,ldconfig刷新一下缓存。显卡驱动版本太高也会导致ICEM启动崩溃甚至Fluent跟着闪退。ANSYS认证过的驱动版本一般比官网最新的低一到两个大版本,回退到那个版本比折腾Mesa省事。

swrast_dri.so这个库本身可能不在默认搜索路径下。报错里写得很清楚,搜索路径是/usr/lib/x86_64-linux-gnu/dri、${ORIGIN}/dri和/usr/lib/dri,但库实际只住在第一个路径下面。建一个软链接把库指到Mesa期望的位置,cd /usr/lib && mkdir ./dri && sudo ln -s /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so /usr/lib/dri/。这个操作对Intel显卡和AMD显卡都有效,AMD的OpenGL完全依赖Mesa,swrast报错基本都是DRI驱动缺了或者路径不对。库确认存在再建链接,ls /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so看一下。


成功启动图片

环境变量是绕过图形驱动冲突最直接的手段。LIBGL_ALWAYS_INDIRECT=1强制OpenGL走间接渲染,ICEM CFD虽然静态链接了libGL但X server缺GLX扩展的时候会报错,设了这个变量之后部分功能能恢复。另一个变量LIBGL_DRIVERS_PATH指向dri目录的绝对路径,export LIBGL_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri:$LIBGL_DRIVERS_PATH。这两个变量写在ICEM的启动脚本里,别写在.bashrc里,写全局的会影响其他图形程序。D:\ICEM\env_setup\launch_icem.sh里存着带环境变量的启动命令。

ANSYS自带的Mesa库是另一条路。安装目录下的Framework/bin/Linux64/Mesa里有ANSYS打包好的libGL,把那个目录加到LD_LIBRARY_PATH的前面,让ICEM优先用ANSYS自带的库,绕开系统的Mesa和NVIDIA驱动。LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/ansys_inc/v241/Framework/bin/Linux64/Mesa,然后export FLUENT_ARCH="lnamd64",再启动runwb2加-oglmesa参数。这个方法的副作用是Workbench和Fluent也会用自带的Mesa,渲染质量不如原生驱动但至少能出图。libGL.so.1如果ANSYS期望在/usr/lib下面而实际在/usr/lib/x86_64-linux-gnu/mesa下面,建一个软链接过去就行,sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so.1。

conda虚拟环境里的libstdc++版本跟系统的swrast_dri.so不兼容也会报这个错。报错信息里会写version `GLIBCXX_3.4.29' not found,swrast_dri.so需要更新版本的libstdc++但conda环境里的太旧了。conda activate xxx之后conda install -c conda-forge libstdcxx-ng,把conda环境里的libstdc++更新到跟系统匹配的版本。用了conda环境跑ANSYS的话这个坑绕不开。

字体库有时候也被当成替罪羊。xfonts-75dpi和xfonts-100dpi装上之后有些机器上libGL的报错会消失,虽然逻辑上字体跟OpenGL驱动没什么关系,但CFD-Online上有人确认过这个操作解决了启动问题。先装驱动再装字体,别反过来。

查一下ICEM启动脚本里的LIBGL_DEBUG变量。export LIBGL_DEBUG=verbose,再启动ICEM,控制台会打出详细的驱动加载过程,能看到它具体在哪个路径下找哪个库、找到没找到、加载失败的原因是什么。这个输出比光看一行报错有用得多,把verbose的输出存到D:\ICEM\error_log\libGL_verbose.log里,下次报错先看这个文件。

D:\ICEM\env_setup\下面那个launch_icem.sh的LD_LIBRARY_PATH顺序还没改,ANSYS自带的Mesa目录加在最后面了,应该加到最前面才能覆盖系统的libGL,那个路径是……

When I start the icem cfd from command line in opensuse leap 15.1 , it gives me the errors of : libGL  error: unable to load driver: swrast_dri.so       libGL error: failed to load driver: swrast  

It can be easily solved by spedifing the library used by the icemcfd directly as   env LD_LIBRARY_PATH=/home/ztdep/ansys_inc/v162/Framework/bin/Linux64/Mesa/           ./icemcfd


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空