能否在集群的个人文件夹内安装OF
-
各位老师好,我在虚拟机内自定义修改了一个求解器,想放在集群里使用。因为在虚拟机里自定义的文件是放在OpenFOAM的run里的,所以想在集群的个人文件夹内安装一个OpenFOAM。不知能否在集群的个人文件夹内安装OF。我将OpenFOAM-7和ThirdParty-7下载并解压,配置环境变量,然后编译OpenFOAM7,报错如下:
flex wmkdep.l; \ gcc -m64 -Dlinux64 -DWM_ARCH_OPTION=64 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -O3 -fPIC lex.yy.c -o /gpfs/xxx/OpenFOAM/OpenFOAM-7/wmake/platforms/linux64Gcc/wmkdep /bin/sh: flex: command not found gcc: error: lex.yy.c: No such file or directory gcc: fatal error: no input files compilation terminated.
请问是哪儿出了问题?我看了一下集群的gcc版本是5.3.0
-
可以,修改 etc/bashrc 里面的 FOAM_INST_DIR,改成你想要安装的路径。然后,尝试去运行 ./Allwmake 。运气好的话,直接就能编译了。如果遇到报错,多半是缺少某些依赖组件,比如你上面的报错是因为系统缺少 flex 这个程序导致的。遇到这种情况,有两个办法,一个是请有 root 权限的管理员帮你把 flex 安装了,另一个办法是自己去下载 flex 的源码来编译,把 flex 也安装到你自己的目录下。OpenFOAM 的离线编译,在 gcc 和 mpi 版本足够用的情况下,可能会缺的依赖库大概是 flex , bison, zlib, boost, 等等,都可以通过自己下载源码编译到自己目录下的方式来解决。要完成这些工作,你需要学习一下从源码编译 flex 等软件的方法,以及编译好之后配置环境变量的方法。
-
@xpqiu @bestucan 非常感谢两位老师的建议!
我的目的是:在虚拟机内自定义修改了一个求解器,想放在集群里编译使用。试了两个方法似乎都编译成功了,我把我的步骤简要说一下,如果有什么错误请各位老师指正:
1、用集群的OpenFOAM编译。之前不敢用集群的OpenFOAM编译自己个人文件夹的求解器,因为我不知道$FOAM_USER
开头的这些环境变量具体的是什么目录,在终端键入env
后就可以看到这些环境变量了,其实用集群的个人账户登录,这些目录都在自己的个人文件夹里,所以接下来和在虚拟机操作类似了。
2、在集群个人文件夹内安装OpenFOAM(如果想用其他版本的OF的话)。开始报错说我缺少flex,我找集群管理员要了root账号,因为我们集群的系统是Centos,所以我键入yum -y install flex
来安装flex。flex安装成功后,登陆个人账户,在终端键入env
后可以看到$FOAM_INST_DIR
是在我个人文件夹内的目录。编译OF,经过了很长时间编译成功,接下来对自定义的求解器编译,也类似于在虚拟机操作的步骤了。如果是不同版本,编译自定义的求解器会有代码语句上的一些不同提示报错,需要修改下。 -
@林之流风 在 能否在集群的个人文件夹内安装OF 中说:
1、用集群的OpenFOAM编译。之前不敢用集群的OpenFOAM编译自己个人文件夹的求解器,因为我不知道
$FOAM_USER
开头的这些环境变量具体的是什么目录,如果是个人帐户,怎么折腾都行,不用怕搞坏系统,因为没权限。
在终端键入
env
后就可以看到这些环境变量了,其实用集群的个人账户登录,这些目录都在自己的个人文件夹里,所以接下来和在虚拟机操作类似了。如果只是看某个环境变量
echo $FOAM_INST_DIR
就行。2、在集群个人文件夹内安装OpenFOAM(如果想用其他版本的OF的话)。开始报错说我缺少flex,我找集群管理员要了root账号,因为我们集群的系统是Centos,所以我键入
yum -y install flex
来安装flex。yum 的 -y 最好不用,这个是默认 yes 。有时候安装软件会更新一些软件再卸载一些软件。还是看看没啥大影响再 yes。
flex安装成功后,登陆个人账户,在终端键入
env
后可以看到$FOAM_INST_DIR
是在我个人文件夹内的目录。编译OF,经过了很长时间编译成功,按说编译时候缺包很难只缺一个包,你说编译成功了,怎么确认的呢?编译log有没有保留?有没有搜 log 里的 warning 和 error? 当然不考虑这些兴许也能往下走,但是出了问题,就比较难定位了,因为可能的坑比较多。编译安装最好按官网的要求把需要的包都装上。