运行下述代码后报错:
|
|
完整报错:
libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_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)
libGL error: failed to load driver: iris
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)
libGL error: failed to load driver: swrast
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 149 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 101
Current serial number in output stream: 102
提示在/usr/lib/dri/
找不到iris和swrast驱动。而在/usr/lib/x86_64-linux-gnu/dri
这个目录下,两个驱动都有。
解决办法:在上面第一个目录中建立到第二个目录中文件的软链接。
[email protected]:~$ sudo mkdir /usr/lib/dri
[email protected]:~$ cd /usr/lib/dri
[email protected]:/usr/lib/dri$ sudo ln -s /usr/lib/x86_64-linux-gnu/dri/iris_dri.so iris_dri.so
sudo ln -s /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so swrast_dri.so
运行程序,再次报错:
libGL error: MESA-LOADER: failed to open iris: /home/aoyu/AoyuCondaEnv/alien_invasion/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /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)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open swrast: /home/aoyu/AoyuCondaEnv/alien_invasion/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /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)
libGL error: failed to load driver: swrast
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 149 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 101
Current serial number in output stream: 102
其中/home/aoyu/AoyuCondaEnv/alien_invasion/
是我的Python解释器所在位置。
报错的原因是GLIBCXX_3.4.30' not found
。在libstdc++.so.6
中看一看所有有关GLIBCXX
的信息12:
[email protected]:~$ strings /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_DEBUG_MESSAGE_LENGTH
[email protected]_3.4
[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
[email protected]@GLIBCXX_3.4.5
GLIBCXX_3.4.21
GLIBCXX_3.4.9
[email protected]@GLIBCXX_3.4.11
GLIBCXX_3.4.10
GLIBCXX_3.4.16
GLIBCXX_3.4.1
[email protected]_3.4
GLIBCXX_3.4.28
[email protected]_3.4
GLIBCXX_3.4.25
[email protected]@GLIBCXX_3.4.5
[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
[email protected]_3.4
_ZN[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
[email protected]@GLIBCXX_3.4.11
[email protected]@GLIBCXX_3.4
[email protected]@GLIBCXX_3.4.5
[email protected]@GLIBCXX_3.4.5
[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
GLIBCXX_3.4.24
[email protected]@GLIBCXX_3.4.11
GLIBCXX_3.4.20
[email protected]@GLIBCXX_3.4.5
GLIBCXX_3.4.12
[email protected]@GLIBCXX_3.4.5
GLIBCXX_3.4.2
[email protected]@GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.15
[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
GLIBCXX_3.4.19
[email protected]_3.4
[email protected]_3.4
GLIBCXX_3.4.27
[email protected]@GLIBCXX_3.4
[email protected]@GLIBCXX_3.4
[email protected]_3.4
[email protected]_3.4
[email protected]@GLIBCXX_3.4.5
GLIBCXX_3.4.23
GLIBCXX_3.4.3
GLIBCXX_3.4.7
[email protected]@GLIBCXX_3.4.5
[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
[email protected]@GLIBCXX_3.4.5
[email protected]@GLIBCXX_3.4.5
GLIBCXX_3.4.18
_ZN[email protected]GLIBCXX_3.4
[email protected]@GLIBCXX_3.4.5
[email protected]@GLIBCXX_3.4.14
[email protected]_3.4
GLIBCXX_3.4.29
[email protected]_3.4
[email protected]_3.4
[email protected]@GLIBCXX_3.4
[email protected]_3.4
[email protected]@GLIBCXX_3.4.11
[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
[email protected]_3.4
[email protected]_3.4
[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
[email protected]@GLIBCXX_3.4.5
[email protected]@GLIBCXX_3.4
GLIBCXX_3.4.22
[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
[email protected]@GLIBCXX_3.4.5
GLIBCXX_3.4.8
GLIBCXX_3.4.13
[email protected]@GLIBCXX_3.4.11
_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_[email protected]@GLIBCXX_3.4.5
GLIBCXX_3.4.17
GLIBCXX_3.4.4
[email protected]@GLIBCXX_3.4.5
[email protected]_3.4
[email protected]@GLIBCXX_3.4.5
GLIBCXX_3.4.26
[email protected]_3.4
确实,最高版本是GLIBCXX_3.4.29
。
(这里为了方便,我用sudo su -
切换为了root)
看一下libstdc++.so.6
这个文件的信息:
(base) [email protected]:~# ls -l /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6
lrwxrwxrwx 1 aoyu aoyu 19 1月 26 13:25 /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6 -> libstdc++.so.6.0.29
(base) [email protected]:~# ls -l /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6.0.29
-rwxrwxr-x 3 aoyu aoyu 17981480 6月 1 2022 /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6.0.29
是一个指向libstdc++.so.6.0.29
的链接。
找找电脑里有没有libstdc++.so
新一点的版本:
(base) [email protected]:~# find / -name "libstdc++.so*"
/opt/anaconda3/lib/libstdc++.so
/opt/anaconda3/lib/libstdc++.so.6.0.29
/opt/anaconda3/lib/libstdc++.so.6
/opt/anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so
/opt/anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6.0.29
/opt/anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6
/home/aoyu/.conda/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so
/home/aoyu/.conda/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6.0.29
/home/aoyu/.conda/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6
/home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so
/home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6.0.29
/home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6
find: ‘/run/user/1000/doc’: 权限不够
find: ‘/run/user/1000/gvfs’: 权限不够
/usr/lib/gcc/x86_64-linux-gnu/12/libstdc++.so
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30-gdb.py
/snap/core20/1778/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core20/1778/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
/snap/core20/1778/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28-gdb.py
/snap/core20/1623/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core20/1623/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
/snap/core20/1623/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28-gdb.py
(base) [email protected]:~#
看到最新的版本是/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30
。
看一下里面有没有GLIBCXX_3.4.30
:
(base) [email protected]:~# strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_3.4.30
GLIBCXX_DEBUG_MESSAGE_LENGTH
可以看到里面有GLIBCXX_3.4.30
,那接下来就用这个libstdc++.so
替换旧的:
(base) [email protected]:~# cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30 /home/aoyu/AoyuCondaEnv/alien_invasion/lib/
(base) [email protected]:~# rm /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6.0.29
(base) [email protected]:~# rm /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6
(base) [email protected]:~# ln -s /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6.0.30 /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6
来确认一下替换libstdc++.so.6
是不是成功了:
(base) [email protected]:~# strings /home/aoyu/AoyuCondaEnv/alien_invasion/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_3.4.30
GLIBCXX_DEBUG_MESSAGE_LENGTH
里面含有GLIBCXX_3.4.30
,确实成功了。
运行程序试试,程序成功运行。
参考资料
conda + openai-gym + 核显 报错:libGL error: MESA-LOADER: failed to open iris