2024年3月26日发(作者:)
OpenFOAM 安装记录
最开始找到
/download/4-1-source/ 按照官网的安装步骤进行,发现linux系统不对
查看linux系统 # more /etc/issue
显示 Fedora release 22 (Twenty Two)
安装步骤为 /download/4-1-linux/
Unpacking the Sources
1. 新建文件夹 /usr/local/OpenFOAM
2. cd /usr/local/OpenFOAM
3. su root
4. 下载代码
wget -O - /source/4-1 | tar xvz
wget -O - /third-party/4-1 | tar xvz
5. 解压
mv ThirdParty-4.x-version-4.1 ThirdParty-4.1
mv OpenFOAM-4.x-version-4.1 OpenFOAM-4.1
Software for Compilation
1. GCC
2. FLEX website /westes/flex
i. 新建文件夹 /usr/local/FLEX
ii. cd /usr/local/FLEX
iii. git clone /westes/
iv. ./
A. 报错:
Can't exec "autopoint": No such file or directory at /usr/local/share/autoconf/Autom4te/ line 344.
autoreconf: failed to run autopoint: No such file or directory
autoreconf: autopoint is needed because this package uses Gettext
a. 安装 help2man // Done
b. 安装 gettext // Done
Problem solved
B. 报错:
stdin:1: error: Autoconf version 2.69 or higher is required
a. 安装 autoconf-2.69 // Done
Problem solved
./configure
A. 报错:
:31: option `dist-lzip' not recognized
autoreconf: automake failed with exit status: 1
a. 安装 26.x86_ // Done but useless
b. figuring out what is " dist-lzip"
暂时决定把这一行注释掉,啥后果之后再说
v.
c. 中:
AM_INIT_AUTOMAKE([-Wno-portability foreign check-news std-options dist-lzip parallel-tests
subdir-objects 1.14.1])
直接删除“dist-lzip”报错::31: require Automake 1.14.1, but have 1.11
重新安装Automake 1.15
B. 报错:
Can't locate Thread/ in @INC (you may need to install the Thread::Queue module) (@INC
contains: /usr/local/share/automake-1.15 /usr/local/lib64/perl5 /usr/local/share/perl5
/usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at
/usr/local/bin/automake line 55.
BEGIN failed--compilation aborted at /usr/local/bin/automake line 58.
a. sudo yum install perl-Thread-Queue
C. 报错:
.in': error: cannot find input file: `Makefile
a. 如果出现这种报错: error: cannot find input file: src/,就在configure 之前
执行如下命令
aclocal
libtoolize -force
automake -add-missing
autoconf
autoheader
make clean
//useless
b. 不知道为什么把flex删了,重新下载之后 ./configure 时的报错都没有了,猜测应该是automake
的版本太低,没有“dist-lzip”这个选项,所以重装automake1.5之后,问题消失
make
A. 新的报错:
You should only need it if you modified a '.y' file.
You may want to install the GNU Bison package:
/software/bison/
安装 Bison
B. 报错:
Makefile:1420: recipe for target 'scan.c' failed
make[2]: *** [scan.c] Error 127
locate scan.c发现包含于boost_1_63_0中,才发现虽然之前下载了,但还没有安装
把相关的.c 和 .h 文件拷到 /usr/include 中。
C. 报错:
gcc -DHAVE_CONFIG_H -I. -DLOCALEDIR="/usr/local/share/locale" -g -O2 -MT stage1flex-scan.o
-MD -MP -MF .deps/ -c -o stage1flex-scan.o `test -f 'scan.c' || echo './'` file
included from scan.c:13:0:
/usr/include/scan.h:40:5: error: unknown type name ‘PARSE’
PARSE * parse;
后面还有相似的报错,推测应该是boost库没有配置好,so what should i do?
所谓的未知名PARSE应该是来源于scan.h中所引用的 parse.h ,而其居然不是来源于boost而是flex,
但scan.h这个文件是从boost中拷过来的„„而parse.h 中没有关于PARSE的定义„„,所以为什
么安装软件时会有这种错误?又不是调试程序,我怎么知道PARSE是干什么的,怎么解决啊,又不
能自己编一个„„即使注释掉PARSE的部分(但人家这么编的一定是有原因的啊),又会有一大堆
的错误„„为什么呀,一个我不知道是干什么的程序,我怎么会调试?!!!
vi.
考虑到除了parse.h 和 parse.c 是flex自带的,其他的都是从boost库中拷过来的,然而在flex 的
readme 文件中并没有提到boost 库,所以这一步到底有多大的正确性?
a. 不知道怎么解决,把readme 再检查一遍,把能装的都装上„„
安装
GNU texinfo //DONE
安装 GNU indent //期间也有报错,但解决得挺容易,就不赘述了
b. 在flex的readme 文件中:* GNU bison; to generate parse.c from parse.y
So where dose parse.h come from ?
vii. make install
也不知道为什么,找来的外援不小心把/usr/local里的文件都给删了,我又把要用的东西给重装了一遍,
还好之前都是用windows下载的安装包,也记录了报错的解决办法,用了一上午的时间把能装的都装上
了,而且莫名其妙地之前的关于“scan.h”的问题也没有了„„
3. cmake //前段时间才装的,应该是可以用的
4. QT 4.8.x // 才把原来装的Qt-5.8删了,重装了Qt-4.8.6,应该是没问题了
5. Git // Done
6. OpenMPI // 已安装 intelMPI 不知道可不可以,但也可以不用mpi
Compiling OpenFOAM
1. # cd /usr/local/OpenFOAM/ThirdParty-4.1
# ./Allwmake
# ./makeParaView
A. 报错:
CMake Error at
/usr/local/OpenFOAM/ThirdParty-4.1/ParaView-5.0.1/CMake/generate_:22(message):
No xmlpatterns executable was defined!!!
a. 找到一个解决方案,不知道能不能work ,等待时间略长,因为要在编译时加上
-xmlpatterns
:
/Forums/openfoam-installation/162189-openfoam-3-0-0-installation-source-code
.html
大概是解决了吧,因为出现了新的问题
B. 报错:
Building up
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
Cannot open data base file
/usr/local/OpenFOAM/ThirdParty-4.1/build/linux64Gcc/ParaView-5.0.1/Applications/ParaView/Documentation/pa
!
a. 安装MySQL 安装过程:/bookwed/p/
b. 添加路径 /ljasdf123/article/details/7426291
vim /etc/profile
在最后添加 export QT_PLUGIN_PATH=/usr/local/Trolltech/Qt-4.8.6/plugins
//Problem solved
2. # cd /usr/local/OpenFOAM/OpenFOAM-4.1
# ./Allwmake
A. 报错:
Boost does not appear to be installed
stopping build
a. 安装boost 安装过程:/henuyx/article/details/46661933
b. 安装Qt 安装过程: /chen_swe/article/details/50636857
./configure -- qmake -- qmake install
源码:C:UsersUSERPicturesSoftware for LInux
c. 安装 cmake 安装过程:/install/
./bootstrap -- make -- make install
d. 安装CGAL
e. 安装 METIS 不知道为什么,好像OpenFOAM 不能识别,不过不是强制性要求
i. # cmake .
报错:
Cannot find source file:
GKlib/conf/check_thread_storage.c
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx
解决:cmake -DCMAKE_CONFIGURATION-TYPES="Release" -DGKLIB_PATH="/usr/local/metis-5.1.0/GKlib" .
ii. # make
iii. # make install
报错:
CMake Error at include/cmake_:36 (file):
file INSTALL destination: /include is not a directory.
Call Stack (most recent call first): cmake_:37 (include)
f. 在文件 makeCGAL中改为 BOOST_SOURCE_DIR=/usr/local/boost_1_63_0,
//Problem solved
B. 报错:
cc1plus: warning: /include: not a directory
scotchDecomp.C:36:20: fatal error: scotch.h: No such file or directory
a. 安装 scotch
以为在ThirdParty-4.1里的./Allwmake会安装所有需要的软件呢,看来我高估它了„„
报错:
../../lib/libscotch.a(parser_ll.o): In function `scotchyylex':
parser_ll.c:(.text+0xf0f): undefined reference to `scotchyywrap'
在一个网页/show_?id=598258 中写道:说是因为Flex的版本升级后,与之
前的版本在某方面不一样了,因此需要打一个补丁。补丁:
/tracker/?func=detail&aid=21095&group_id=248&atid=1081
找到这个补丁后,发现是对scotch-6.0.4的补丁,而OpenFOAM所包含的scotch为scotch-6.0.3, 尝试修
改补丁文件中的相关部分,然而任然会报错,所以重新下载scotch-6.0.4,对其进行补丁修改,之后编译
通过,完成是scotch-6.0.4的安装,但是不知道对OpenFOAM的编译有没有影响。
关于patch 文件,可见/huguangshanse00/article/details/35780081
具体步骤:
i. 将补丁放入文件夹 /usr/local/OpenFOAM/ThirdParty-4.1/scotch_6.0.4
ii. # cd /usr/local/OpenFOAM/ThirdParty-4.1/scotch_6.0.4/src
iii. # patch -p1 < ../
iv. 提示 can't find file to patch at input line 3
„„
File to patch:
v.
键入 /usr/local/OpenFOAM/ThirdParty-4.1/scotch_6.0.4/src/libscotch/parser_ll.l
# make
vi. # make install
//Problem solved
C. 报错:
/usr/local/OpenFOAM/OpenFOAM-4.1/platforms/linux64GccDPInt32Opt/lib/openmpi-system/:
undefined reference to `MPI_Waitall'
a. 解决过程比较曲折,首先找到这个帖子:
/questions/31200858/openfoam-openmpi-error-libmpi-so-0-not-found
跟我出现相同的问题,不过我一开始没看懂,他说的/etc/bashrc文件中环境变量的设置,我以为就是系
统的环境变量设置,所以完全不知道他说的是啥,只知道大概是可以用其他的mpi编译。
b. 然后找到这篇文章:/s/blog_才知道原来/etc 前面还有一个
地址,然后就是漫长的修改参数的过程,试了好多遍,最终终于算是试对了,然而我也不记得修改了哪
些参数„„只记得是用了intelMPI。
i. # vim $WM_PROJECT_DIR/etc/bashrc
ii.
iii.
iv.
v.
92行,修改为 export WM_MPLIB=INTELMPI , 保存退出
# vim /usr/local/OpenFOAM/OpenFOAM-4.1/etc//mpi
23行 INTELMPI) 下添加MPI_ROOT="/opt/intel/parallelstudio/impi/5.0.1.035/intel64" 保存,退出
source $WM_PROJECT_DIR/etc/bashrc
//Problem solved,修改大致如上,记不清还是否有其他的变动了


发布评论