【libGL error】Autodl云服务器配置ACT的conda虚拟环境生成训练数据时,遇到了libGL相关错误,涉及swrast_dri.so

news2024/11/25 22:28:28

问题与解决方案

1. libGL error: MESA-LOADER: failed to open iris

conda install -c conda-forge libstdcxx-ng

来源suffix _dri

下面的问题是在Autodl云服务器上运行程序是出现的,在Ubuntu笔记本上安装的Anaconda没有出现以下问题。

Autodl云服务器安装的是Miniconda3基础镜像,框架版本conda3,python版本3.10(Ubuntu22.04),Cuda版本11.8。

2. libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
cd  /usr/lib/
sudo mkdir dri
cd dri
sudo ln -s  /lib/x86_64-linux-gnu/dri/swrast_dri.so    swrast_dri.so

sudo ln -s /lib/x86_64-linux-gnu/dri/swrast_dri.so swrast_dri.so

  • 命令功能ln -s 用于创建一个符号链接(软链接)。
  • 目的:这个命令将在当前工作目录中创建一个名为 swrast_dri.so 的符号链接,指向 /lib/x86_64-linux-gnu/dri/swrast_dri.so 文件。这样,你可以通过 swrast_dri.so 来访问原始文件,而不必使用完整路径。
  • 注意:这个命令会在当前目录中创建一个新文件(链接),如果 swrast_dri.so 文件已经存在,则会出错。
3. `GLIBCXX_3.4.30’ not found

libGL error: MESA-LOADER: failed to open swrast: /root/miniconda3/envs/act_a1/bin/…/lib/libstdc++.so.6: version `GLIBCXX_3.4.30’ not found (required by /usr/lib/x86_64-linux-gnu/libLLVM-15.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)

 conda install -c conda-forge gcc
  • conda:调用 Conda 包管理工具。
  • install:安装软件包。
  • -c conda-forge:指定安装源为 conda-forge 频道。conda-forge 是一个提供大量开源软件包的社区驱动频道,通常包含一些官方频道没有的软件包版本。
  • gcc:要安装的软件包名称。在这里是 gcc,即 GNU 编译器集合(GNU Compiler Collection),主要包含 C、C++ 等编程语言的编译器。

conda install -c conda-forge gcc 这个命令的作用是从 conda-forge 频道中安装 gcc 编译器。这样可以确保你在 Conda 环境中获得合适的 GCC 版本,用于编译 C/C++ 程序或安装需要编译的其他软件包。

4. /libstdc++.so.6: version `CXXABI_1.3.8’ not found

libGL error: MESA-LOADER: failed to open swrast: /root/miniconda3/envs/act_a1/bin/…/lib/libstdc++.so.6: version `CXXABI_1.3.8’ not found (required by /usr/lib/dri/swrast_dri.so) (search paths /usr/lib/x86_64-linux-gnu/dri:$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast

云服务器安装的是miniconda3

在这里插入图片描述

 vi  ~/.bashrc

在文件中添加如下代码

(将anaconda3库文件路径添加到系统的库文件路径中)

LD_LIBRARY_PATH=/root/miniconda3/lib:$LD_LIBRARY_PATH     
export LD_LIBRARY_PATH

在这里插入图片描述

vi中的基本编辑操作:

  1. 打开文件vi filename

  2. 进入插入模式并开始编辑

    • 按下 i 键进入插入模式。
    • 输入或编辑文本内容。
  3. 保存并退出

    • Esc 键退出插入模式,回到命令模式。
    • 输入 :wq,然后按 Enter 键即可保存并退出。
source  ~/.bashrc

在这里插入图片描述
用系统的libstdc++库替换miniconda3环境中的库,避免不同版本之间的兼容性问题。这种方法通常用于解决由于不同libstdc++版本引起的兼容问题,尤其在使用一些依赖C++标准库的包时效果显著。

  • 进入miniconda3lib目录

    cd ~/miniconda3/lib
    

    切换到miniconda3安装目录下的lib文件夹,这是miniconda3环境中存放库文件的地方。

  • 创建备份文件夹

    mkdir backup 
    

    创建一个名为backup的新文件夹,用于保存当前目录下原有的libstdc++文件,以便需要时可以还原。

  • 将原有的libstdc++文件移动到备份文件夹

    mv libstd* backup  
    

    将所有以libstd开头的文件(包含libstdc++库文件及其符号链接)移动到backup文件夹中。

  • 从系统目录复制libstdc++.so.6到当前目录

    cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./
    

    从系统目录(如/usr/lib/x86_64-linux-gnu)复制系统版本的libstdc++.so.6到当前目录下,以便miniconda3环境使用系统的libstdc++库文件。

  • 创建符号链接libstdc++.so指向libstdc++.so.6

    ln -s libstdc++.so.6 libstdc++.so
    

    创建符号链接libstdc++.so,指向刚复制的libstdc++.so.6,以确保程序能够找到libstdc++库的主要链接文件。

  • 创建符号链接libstdc++.so.6.0.19指向libstdc++.so.6

    ln -s libstdc++.so.6 libstdc++.so.6.0.19
    

    创建符号链接libstdc++.so.6.0.19,指向libstdc++.so.6,以确保程序在寻找特定版本6.0.19libstdc++时能够正常找到这个库文件。

使用strings命令查看libstdc++.so.6.0.19文件中的字符串,并通过grep筛选出包含CXXABI的行。这一步是为了确认当前库的C++ ABI版本号,与其他依赖库的ABI兼容性。

strings ~/miniconda3/lib/libstdc++.so.6.0.19 | grep CXXABI

在这里插入图片描述

sudo cp ~/miniconda3/lib/libstdc++.so.6.0.19 /root/miniconda3/envs/act_a1/bin/../lib
cd /root/miniconda3/envs/act_a1/bin/../lib
ls
sudo ln -s libstdc++.so.6.0.19  libstdc++.so.6
  • libstdc++.so.6.0.19复制到另一个环境的lib目录

    • sudo cp ~/miniconda3/lib/libstdc++.so.6.0.19 /root/miniconda3/envs/act_a1/bin/../lib
      把刚替换后的libstdc++.so.6.0.19文件复制到act_a1环境的lib目录。
  • 创建libstdc++.so.6的符号链接

    • sudo ln -s libstdc++.so.6.0.19 libstdc++.so.6
      act_a1环境的lib目录中,创建一个符号链接libstdc++.so.6,指向libstdc++.so.6.0.19,确保程序在查找libstdc++.so.6时能找到这个特定的版本。

再次检查C++ ABI版本,确保在act_a1环境中的新库的C++ ABI版本号符合需求,避免不兼容问题。

strings /root/miniconda3/envs/act_a1/bin/../lib/libstdc++.so.6 | grep CXXABI

在这里插入图片描述

5.在远程服务器或无显示设备的环境中 Mujoco 试图渲染图像时遇到了 gladLoadGL error,并且 GLFW 报告 X11 显示环境变量 DISPLAY 缺失

/root/miniconda3/envs/act_a1/lib/python3.8/site-packages/glfw/init.py:914: GLFWError: (65544) b’X11: The DISPLAY environment variable is missing’
warnings.warn(message, GLFWError)
episode_idx=0
Rollout out EE space scripted policy
/root/miniconda3/envs/act_a1/lib/python3.8/site-packages/glfw/init.py:914: GLFWError: (65537) b’The GLFW library is not initialized’
warnings.warn(message, GLFWError)

使用EGL作为渲染后端
在云服务器上,EGL是一种常见的无屏幕(headless)渲染解决方案,适合在没有物理显示器的环境中调用GPU进行渲染。
设置环境变量让MuJoCo等渲染库使用EGL:

export MUJOCO_GL=egl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2228493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

逆变器竞品分析--绿联150W方案【2024/10/30】

绿联这款车载逆变器具备两个AC输出插座,支持150W输出功率。1A1C快充接口支持30W输出功率,可以同时为四台设备供电。逆变器采用车充输入供电,自带1.3米输入线,逆变器内置数显屏幕,能够实时显示工作状态,时刻…

LeetCode 热题 100之链表3

1.k个一组翻转链表 思路分析:我们需要将链表分成若干个长度为 k 的子链表组,逐组进行翻转。若最后一组节点的数量不足 k,则保持原有顺序 创建一个虚拟头节点 dummy,以简化边界条件的处理。该节点的 next 指向链表的头节点。通过 d…

Redis慢查询分析优化

文章目录 一、定义二、慢查询参数配置三、慢查询日志四、排查步骤五、Redis变慢原因 一、定义 在Redis执行时耗时超过某个阈值的命令,称为慢查询。 慢查询日志帮助开发和运维人员定位系统存在的慢操作。慢查询日志就是系统在命令执行前后计算每条命令的执行时间&…

接口自动化测试平台项目环境搭建

这篇文章主要记录开发接口自动化测试平台的尝试作---环境搭建和写一个项目管理模型。 电脑需要有python环境,且已经安装了django,我用的是python3.12 和 django 最新版本。写代码我使用的pycharm。 其中环境搭建大概分下面几步: 一、在代码…

Oracle OCP认证考试考点详解082系列06

题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 26. 第26题: 题目 解析及答案: 关于间隔(INTERVAL)数据类型,以下哪两个陈述是…

python的数据结构列表方法及扩展(栈和队列)

python的数据结构 python的list方法 list.append() 添加一个元素到列表末尾。list,append(num)相当于a[len(a):] [num] a [1,2,3,4,5] a.append(6) print(a) a[len(a):] [7] print(a)list.extend() 添加指定列表的所有元素。list.extend(nums)相当于a a nums a [1,2,3]…

highcharts的datalabels标签格式化

Highcharts的数据标签格式化 代码如下 plotOptions: {series: {dataLabels: {enabled: true,format: {y:.2f} mm}} },y就是当前数据点的值,.2f代表2位小数,效果如下图

如何安装自动化测试工具katalon?

一、下载,最下面有免费的版本 Katalon Studio 免费下载 |卡塔隆 二、安装 第一次安装,需要输入注册信息,注册成功之后,就可以使用了。

从简单的demo开始让您逐步了解GetX的用法

目录 前言 一、从demo开始体现下Getx的用法 二、从最简单的功能开始 1.新建一个Flutter工程 2.GetX初体验 1.路由跳转 1.普通路由跳转 2.跳转并从堆栈中销毁当前页面 3.跳转并销毁之前所有页面 4.跳转以及传值 2.更方便的实现SnackBar、Dialog、BottomSheet 三、Ge…

【无标题】从网红长沙看背后的湘菜产业

“吃什么?” 相信这是每一个来长沙旅游的人,面临的第一个问题。 近年来,长沙以美食为媒介,成功吸引了无数游客的目光。而湘菜,作为湖南最具特色的美食名片,无疑在这场美食盛宴中占据了举足轻重的地位。 …

使用 Qt 实现自定义罗盘控件

用 Qt 编写一个简单的罗盘控件,该控件能够动态显示方向。该控件实现了一个带有北(N)和南(S)标记的圆形罗盘面盘,具有可以根据输入角度旋转的指针。 代码功能概述 该项目定义了一个 CompassWidget 类&…

算法|牛客网华为机试21-30C++

牛客网华为机试 上篇:算法|牛客网华为机试10-20C 文章目录 HJ21 简单密码HJ22 汽水瓶HJ23 删除字符串中出现次数最少的字符HJ24 合唱队HJ25 数据分类处理HJ26 字符串排序HJ27 查找兄弟单词HJ28 素数伴侣HJ29 字符串加解密HJ30 字符串合并处理 HJ21 简单密码 题目描…

使用 MMDetection 实现 Pascal VOC 数据集的目标检测项目练习(二) ubuntu的下载安装

首先,Linux系统是人工智能和深度学习首选系统。原因如下: 开放性和自由度:Linux 是一个开源操作系统,允许开发者自由修改和分发代码。这在开发和研究阶段非常有用,因为开发者可以轻松地访问和修改底层代码。社区支持:…

【ECMAScript标准】深入解析ES5:现代JavaScript的基石

🧑‍💼 一名茫茫大海中沉浮的小小程序员🍬 👉 你的一键四连 (关注 点赞收藏评论)是我更新的最大动力❤️! 📑 目录 🔽 前言1️⃣ ES5的概述2️⃣ ES5的关键特性3️⃣ ES5与之前版本的区别4️⃣ …

【万户软件-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

第2章 Android App开发基础

第 2 章 Android App开发基础 bilibili学习地址 github代码地址 本章介绍基于Android系统的App开发常识,包括以下几个方面:App开发与其他软件开发有什么不一 样,App工程是怎样的组织结构又是怎样配置的,App开发的前后端分离设计…

文本分段Chunking综述-RAG

为什么要分段? 即便大模型开始普通支持更大的上下文,但 RAG 技术目前仍然具有不可替代的价值,RAG 需要外部知识库。外部知识文档往往比较长,可能是包含几十页甚至数百页的内容,如果直接使用会存在以下问题&#xff1a…

R语言 | paletteer包:拥有2100多个调色板!

看到 PMID:39024031 文章的代码中&#xff0c;有颜色设置的语句&#xff1a; pal <- paletteer_d("ggsci::category20_d3")[c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)]DimPlot(MM,reduction umap,group.by "sample",label F,pt.size 0.1,c…

怎么看AI大模型(LLM)、智能体(Agent)、知识库、向量数据库、知识图谱,RAG,AGI 的不同形态?

前言 在 AI 人工智能时代&#xff0c;智能体将会是未来最主流的大模型应用方式&#xff1f;人人都有机会通过智能体&#xff0c;解锁成为【超级个体】。 在人工智能的快速发展中&#xff0c;LLM、Agent、知识库、向量数据库、RAG&#xff08;检索增强生成&#xff09;、知识图…