运行ParaView出现ImportError: libstdc++.so.6缺少GLIBCXX_3.4.26如何解决
ParaView运行提示GLIBCXX_3.4.26缺失的解决方案
问题根因
报错中提到的GLIBCXX_3.4.26缺失不是系统没有对应版本,而是启动ParaView时,OpenFOAM v2012环境优先加载了自带的gcc 6.3.0对应的旧版libstdc++.so.6,该旧版本最高仅支持到GLIBCXX_3.4.22,无法满足系统依赖要求。
可选用的解决方法
方案1:单次启动临时修复(兼容性最好,推荐优先试用)
运行ParaView时强制优先加载系统新版libstdc++库,命令如下:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 paraview
该方案不会修改任何全局配置,也不会影响OpenFOAM其他功能的正常使用。
方案2:修改环境变量全局生效
修改OpenFOAM加载后的LD_LIBRARY_PATH优先级,让系统库路径优先于OpenFOAM第三方库路径:
- 打开用户目录下的
.bashrc(或你自定义的OpenFOAM环境加载配置文件),找到加载OpenFOAM环境的配置行,通常为:source /opt/OpenFOAM/OpenFOAM-v2012/etc/bashrc - 在该行下方新增如下配置:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH - 保存文件后执行
source ~/.bashrc生效,后续启动ParaView无需额外添加参数。
方案3:替换OpenFOAM自带的旧库软链接
直接替换OpenFOAM第三方目录下的旧版libstdc++软链接,指向系统新版库:
- 先备份原文件:
sudo mv /opt/OpenFOAM/OpenFOAM-v2012/ThirdParty/platforms/linux64/gcc-6.3.0/lib64/libstdc++.so.6 /opt/OpenFOAM/OpenFOAM-v2012/ThirdParty/platforms/linux64/gcc-6.3.0/lib64/libstdc++.so.6.bak - 创建新的软链接:
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/OpenFOAM/OpenFOAM-v2012/ThirdParty/platforms/linux64/gcc-6.3.0/lib64/libstdc++.so.6
注意事项
如果使用方案2或方案3后,OpenFOAM本身的求解器运行出现兼容报错,回滚对应修改,改用方案1即可。
内容的提问来源于stack exchange,提问作者QUTADAH
相关产品推荐
相关产品推荐

