openfoam v2006 wsl2 ubuntu 20.04 GLIBCXX_3.4.26未找到

时间:2020-07-05 19:25:06

标签: libstdc++ ubuntu-20.04 openfoam wsl-2

自从我在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*flexwmake,{{1 }}和gcc代表g++icoFoam*critical error*但是我给出的是heregcc不是要从tar文件安装。根据空腔教程的运行情况,似乎可以很好地安装Openfoam。

4 个答案:

答案 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 并清理它。