自从我在wsl2 ubuntu 20.04上按照指南here进行安装以来,一直遇到与libstc++.so.6
有关的错误,特别是GLIBCXX_3.4.26 not found (required by ...)
,其中...指的是{以/opt/OpenFOAM/ThirdParty-v2006/platforms/linux64/gcc-6.3.0/lib64/
,.so
,.so.1
结尾的{1}}等(例如,运行.so.6
时,大约20个这样的文件会出现错误)。我能够成功可视化腔体教程(在Windows上的Paraview安装中)。
我可以通过做用户 laborg 在1月4日针对julia的类似问题(见here)提出的建议来解决,特别是复制libstdc ++。so.6从paraFoam
到/usr/lib/x86_64-linux-gnu
。
问题是是否建议使用此复制粘贴解决方案;它会回来并在以后困扰我吗?如果在openfoam的lib64文件夹中使用系统安装中的/opt/OpenFOAM/ThirdParty-v2006/platforms/linux64/gcc-6.3.0/lib64/
会不会成为问题?
有关openfoam安装的其他信息,libstdc++.so.6
显示针对foamInstallationTest
,*not installed*
,flex
,wmake
,{{1 }}和gcc
代表g++
,icoFoam
,*critical error*
但是我给出的是here,gcc
不是要从tar文件安装。根据空腔教程的运行情况,似乎可以很好地安装Openfoam。
答案 0 :(得分:0)
好的,请不要复制过去的操作来解决此问题。该错误表明您尚未在ubuntu中安装预请求库。看来您已经错过了本教程的第一步。
答案 1 :(得分:0)
不建议这样做,但只要从该命令返回的GLIBC版本就不会造成伤害
strings /opt/OpenFOAM/ThirdParty-v2006/platforms/linux64/gcc-6.3.0/lib64/libstdc++.so.6 | grep GLIBC
是此命令的GLIBC版本的子集。
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC
毫无疑问,Ubuntu设置就是这种情况。
风险较小的方法是将软链接/opt/OpenFOAM/ThirdParty-v2006/platforms/linux64/gcc-6.3.0/lib64/libstdc++.so.6重定向到其他libstdc ++。so.6 (这样您就可以保留两个版本)
ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/OpenFOAM/ThirdParty-v2006/platforms/linux64/gcc-6.3.0/lib64/libstdc++.so.6
然后,如果遇到问题,可以随时将链接重置回其原始目标。当然,/usr/lib/x86_64-linux-gnu/libstdc++.so.6
本身就是一个软链接,但是您可以完全指向它,也可以指向它的目标。
我认为您遇到的问题是此处https://www.cfd-online.com/Forums/main/229027-persistence-glibcxx_3-4-26-not-found.html提到的问题的衍生,这表明您不是安装错误,而是与OpenFoam包装有关的问题二进制文件。我同意,由于OpenFoam将所有内容都预先添加到路径中,它会破坏wsl2的设置。当然,最安全的方法是使用Ubuntu系统的gcc从源代码进行编译,从而绕过ThirdParty。
答案 2 :(得分:0)
看到您在 WSL 实例中使用 Ubuntu,也可以直接安装 Ubuntu 包:
https://develop.openfoam.com/Development/openfoam/-/wikis/precompiled/debian
答案 3 :(得分:0)
这个问题来自教程中的这一行:
echo "source /opt/OpenFOAM/OpenFOAM-v2012/etc/bashrc" >> ~/.bashrc
每次打开终端(或启动 WSL2 会话)时,这将指向 OpenFOAM 的 libstdc++。如果您的工作流程与 OpenFOAM 无关,那可能是一个问题。如果您在 ~/.bashrc 中删除或注释该行,事情应该会恢复正常。您可以在 WSL2 中使用 nano。
nano ~/.bashrc
然后评论:
#source /opt/OpenFOAM/OpenFOAM-v2012/etc/bashrc
但是,由于 OpenFOAM 使用该 bashrc,因此在使用 openFOAM 之前,您需要在每个终端中获取 OpenFOAM bashrc。
source /opt/OpenFOAM/OpenFOAM-v2012/etc/bashrc
我个人的选择是保留该行的注释,如果我使用 OpenFOAM 进行长时间的工作会话,我只需使用 nano 取消注释,这样我打开的每个 shell 都可以工作而无需再次采购。
有更优雅或更复杂的方法,但我更喜欢这个。
这个答案应该也适用于 2006 版,你分享的链接指向 2012 年,所以我猜他们刚刚更新了教程。如果您安装了 2006,请确保在您提供注释/取消注释时使用正确的名称。
同样,如果您使用另一个工具学习另一个教程并使用另一个库,您可能会遇到问题。
首先看看你的 bashrc 并清理它。