0

由于我根据此处libstc++.so.6的指南GLIBCXX_3.4.26 not found (required by ...)在wsl2 ubuntu 20.04 上/opt/OpenFOAM/ThirdParty-v2006/platforms/linux64/gcc-6.3.0/lib64/安装.so,我一直遇到.so.1与关于大约 20 个这样的文件)。我能够成功地可视化腔教程(在 windows 上的 paraview 安装中)。.so.6paraFoam

我可以通过执行用户labourg在 1 月 4 日针对 julia 的类似问题(参见此处)提出的建议来消除错误,特别是将 libstdc++.so.6 从复制/usr/lib/x86_64-linux-gnu/opt/OpenFOAM/ThirdParty-v2006/platforms/linux64/gcc-6.3.0/lib64/.

问题是是否推荐这种复制粘贴解决方案;以后它会回来困扰我吗?如果在openfoamlibstdc++.so.6的 lib64 文件夹中使用 from system 安装会成为问题吗?

有关 openfoam 安装的附加信息,foamInstallationTest显示*not installed*针对flex, wmake, gcc,和for , g++,的错误;但我在这里给出的,并不意味着从 tar 文件安装。根据空腔教程的运行,Openfoam 安装似乎没问题。icoFoam*critical error*gccg++icoFoamfoamInstallationTest

4

4 回答 4

0

好的,请不要复制过去的操作来解决这个问题。该错误意味着您尚未在 ubuntu 中安装预请求库。您似乎错过了教程的第一步。

于 2020-09-12T09:33:53.020 回答
0

看到您在 WSL 实例中使用 Ubuntu,也可以直接安装 Ubuntu

https://develop.openfoam.com/Development/openfoam/-/wikis/precompiled/debian

于 2021-02-04T07:39:56.903 回答
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 从源代码编译,从而绕过第三方。

于 2020-11-11T17:11:44.543 回答
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取消注释它,因此我打开的每个外壳都可以正常工作而无需再次采购。

还有更优雅或更复杂的方法,但我更喜欢这个。

这个答案应该对 2006 版本也有效,您共享的链接指向 2012,所以我猜他们刚刚更新了教程。如果您安装了 2006,请确保在获取注释/取消注释时使用正确的名称。

同样,如果您使用另一个工具遵循另一个教程并获取另一个库,您可能会遇到问题。

只需首先查看您的 bashrc 并对其进行清理。

于 2021-07-02T11:10:57.913 回答