点云编码遇GLIBCXX_3.4.29缺失报错,更新环境后仍未解决求助
解决libstdc++.so.6缺失GLIBCXX_3.4.29版本的问题
问题场景
我在开展点云编解码器相关工作,执行以下编码命令时:
$ python vmuc.py compress /home2/kubra/JPEG/Stanford_Area_2.ply ../models/Geometry-only/Codec/0.00025/checkpoint_best_loss.pth.tar ../results/G0.00025
反复出现报错,核心错误信息为:
ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/kubra/anaconda3/envs/myenv/lib/python3.9/site-packages/scipy/spatial/_ckdtree.cpython-39-x86_64-linux-gnu.so)
已尝试更新libstdc++、创建新Python环境并更新依赖包,但问题仍未解决。
可行解决办法
优先调用conda环境内的libstdc++
你的scipy是conda环境中安装的,系统libstdc++版本不足,可通过环境变量让程序优先加载conda环境内的库:- 找到conda环境下的libstdc++.so.6路径,示例路径为
/home/kubra/anaconda3/envs/myenv/lib/libstdc++.so.6 - 执行命令前设置环境变量:
export LD_PRELOAD=/home/kubra/anaconda3/envs/myenv/lib/libstdc++.so.6 python vmuc.py compress /home2/kubra/JPEG/Stanford_Area_2.ply ../models/Geometry-only/Codec/0.00025/checkpoint_best_loss.pth.tar ../results/G0.00025也可将该环境变量添加到conda环境的激活脚本中,实现自动生效。
- 找到conda环境下的libstdc++.so.6路径,示例路径为
降级scipy到适配版本
高版本scipy对libstdc++要求较高,可安装低版本scipy(如1.7.x系列,对GLIBCXX要求低于3.4.29):conda activate myenv pip uninstall scipy -y pip install scipy==1.7.3安装完成后重新运行原命令测试。
手动更新系统libstdc++(需root权限)
若拥有服务器root权限,可手动替换系统的libstdc++文件:- 先备份原文件:
sudo cp /lib/x86_64-linux-gnu/libstdc++.so.6 /lib/x86_64-linux-gnu/libstdc++.so.6.bak- 复制conda环境中的库到系统目录:
sudo cp /home/kubra/anaconda3/envs/myenv/lib/libstdc++.so.6 /lib/x86_64-linux-gnu/注意:此操作可能影响系统其他程序,务必先备份。
从源码编译scipy
若上述方法无效,可在当前conda环境中从源码编译scipy,适配系统libstdc++版本:conda activate myenv pip uninstall scipy -y # 安装编译依赖 conda install gcc_linux-64 gxx_linux-64 # 源码安装scipy pip install scipy --no-binary :all:
内容的提问来源于stack exchange,提问作者obby
相关产品推荐
相关产品推荐

