无管理员权限服务器编译安装OpenFOAM报错求助
这问题其实很好理解:你还没开始编译OpenFOAM,所以platforms目录根本还没生成!那个bashrc脚本是给已经编译完成的OpenFOAM配置环境用的,它会去加载编译好的二进制文件路径,但现在编译还没启动,自然找不到对应的bin文件夹,才会报这个错。
按正确的编译流程走,就能搞定:
先跳过source,直接启动编译
先进入OpenFOAM的主目录:cd ~/OpenFOAM/OpenFOAM-v1712运行官方的编译脚本(
-j后面的数字换成服务器的CPU核心数,比如-j8,能大幅加快编译速度):./Allwmake -j4这个脚本会自动处理所有依赖检查、编译核心组件和第三方库,等它跑完,
platforms/linux64GccDPInt32Opt目录(包括里面的bin文件夹)就会自动生成。编译完成后再配置环境
编译可能要花几十分钟到几小时(看服务器性能),等它结束后,再执行你之前的source命令:source ~/OpenFOAM/OpenFOAM-v1712/etc/bashrc这时候脚本就能找到对应的路径,不会再报错了。
关于未安装依赖的补充
你提到的libncurses-dev、libxt-dev这些都是非必要依赖,它们只影响一些辅助工具(比如终端交互小工具、GUI可视化组件),不会影响OpenFOAM的核心求解功能。如果编译时遇到和这些依赖相关的报错,你可以自己从源码编译这些依赖到用户目录(比如~/local),然后在编译OpenFOAM前设置LD_LIBRARY_PATH指向这些依赖的库路径就行。
要是编译过程中遇到搞不定的依赖问题,或者不想耗时间等编译,试试这几种方法:
用预编译包直接用
去OpenFOAM官网下载适配Ubuntu 16.04的v1712预编译tar包,解压到你的用户目录,然后修改解压目录里的etc/bashrc,把所有路径都改成你的用户目录路径(比如WM_PROJECT_DIR设为你解压的路径),之后source这个修改后的bashrc就能直接用,不用编译。用Singularity容器
Singularity支持无管理员权限运行容器,你可以下载OpenFOAM官方的Singularity镜像,直接在用户账户下启动容器,就能拿到完整的OpenFOAM环境:# 下载对应镜像 singularity pull docker://openfoam/openfoam-v1712:ubuntu16.04 # 启动容器进入环境 singularity shell openfoam-v1712_ubuntu16.04.sif进容器后直接就能用所有OpenFOAM命令。
Conda一键安装
如果服务器没装conda,先自己装个Miniconda到用户目录,然后从conda-forge频道装OpenFOAM:# 创建并激活专属环境 conda create -n openfoam_env -c conda-forge openfoam conda activate openfoam_env注意conda上的OpenFOAM版本可能不是v1712,但如果版本能满足你的需求,这是最省心的方式。
内容的提问来源于stack exchange,提问作者Foad S. Farimani

