目录
- libGL error: MESA-LOADER: failed to open swrast
- 解决方法
- 1. 检查并更新 `libstdc++` 库
- 2. 使用系统库覆盖 Conda 库
- 总结
libGL error: MESA-LOADER: failed to open swrast
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
没有正确配置OpenGL环境变量。
export LIBGL_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri/
- 1
libGL error: MESA-LOADER: failed to open swrast: /root/miniconda3/envs/lib/python3.10/site-packages/torch/lib/…/…/…/…/./libstdc++.so.6: version GLIBCXX_3.4.30’ not found (required by /usr/lib/x86_64-linux-gnu/.1) (search paths /usr/lib/x86_64-linux-gnu/dri/, suffix _dri)
libGL error: failed to load driver: swrast
这个错误信息显示 libGL
无法加载 swrast
驱动程序,因为 libstdc++.so.6
库的版本不匹配,缺少 GLIBCXX_3.4.30
版本符号。这通常是由于系统上安装的 libstdc++.so.6
版本与特定的应用程序或库不兼容造成的。
解决方法
1. 检查并更新 libstdc++
库
首先,确认系统上的 libstdc++.so.6
库是否包含 GLIBCXX_3.4.30
符号。你可以使用以下命令查看已安装的 libstdc++.so.6
库支持的符号版本:
# 检查 Conda 环境中的 `libstdc++` 库版本
strings $CONDA_PREFIX/lib/libstdc++.so.6 | grep GLIBCXX
# 检查系统环境中的 `libstdc++` 库版本
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
- 1
- 2
- 3
- 4
如果你没有看到 GLIBCXX_3.4.30
,那么需要更新 libstdc++
库:
sudo apt-get update
sudo apt-get install libstdc++6
- 1
- 2
2. 使用系统库覆盖 Conda 库
有时候可能需要让程序优先使用系统库而不是 Conda 环境中的库。你可以在运行程序之前设置环境变量 LD_PRELOAD
:
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6
- 1
这将强制使用系统路径中的 libstdc++
版本。
总结
问题的根源是系统上的 libstdc++
版本与应用程序所需的版本不匹配。通过更新系统或 Conda 环境中的 libstdc++
库,或者调整库加载顺序,可以解决这个问题。如果这些步骤无法解决问题,请尝试重新配置或重新安装环境。