ERROR之libGL error:failed to open swrast与libstdc++.so.6: version GLIBCXX_3.4.30‘ not found

时间:2025-03-29 10:33:49

目录

  • 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++ 库,或者调整库加载顺序,可以解决这个问题。如果这些步骤无法解决问题,请尝试重新配置或重新安装环境。