Linux/FastCAE-代码编译手册
一、基础环境配置
Ubuntu/Debian
sudo apt install build-essential
sudo apt install cmake g++ gfortran
sudo apt install meson ninja-build
sudo apt install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libfontconfig1-dev libxkbcommon-dev
Fedora
sudo yum groupinstall "Development Tools"
sudo yum install gcc-g++ gcc-gfortran cmake
sudo dnf install meson ninja-build
sudo yum install mesa-libGL mesa-libGL-devel mesa-libGLU mesa-libGLU-devel
sudo yum install fontconfig fontconfig-devel
sudo yum install libxkbcommon libxkbcommon-devel
二、使用编译好的库文件
FastCAE开发组提供了编译好的库文件,下载方式:
git clone https://gitee.com/chanyuantiandao/FastCAELinuxExtlib.git extlib
得到extlib文件夹。
下载FastCAE源代码:
git clone https://gitee.com/DISOGitee/FastCAE.git
将上一步得到的extlilb文件夹拷贝到FastCAE文件夹内即可。
仍然需要手动安装Qt 5.14(也可以选择其他Qt 5.x),安装步骤下一节会介绍,注意安装完后要设置环境变量。
使用CMake构建项目(要求CMake版本大于3.21):
cmake -DCMAKE_INSTALL_PREFIX:PATH=/path_to_install -B build -S .
也可以在build文件夹内进行make和make install,安装完成后可以直接使用,编译过程基本没有bug出现。
三、自主编译库文件
不想用编译好的库文件或者库文件与当前GNU/Linux系统发行版不兼容,或者想用更新版本的库,则需要从源代码编译库文件,注意,编译时有先后顺序的要求,以及库之间不一定兼容,不要盲目选择最新的库。
从源代码编译库时建议使用release版本,不要使用master版本,尽量选择stable的大版本,不要选择正在开发中的新版本。
在多核心电脑上编译时可以使用make -j4,如果电脑内存够大可以使用make -j,但需特别注意,并行编译同时启动的线程较多时对内存消耗极大。使用make install时,应确保目标文件夹内没有其他文件。
编译库文件make install时编译到统一的文件夹中,路径为为FastCAE/extlib/XXX,这是FastCAE默认的第三方库文件路径名。库文件的文件夹名组织形式如下
extlib的目录结构,括号内为建议使用的特定版本:
extlib ├─CGNS(version:4.3.0) │ ├─Gmsh(version:4.8.0) │ ├─HDF5(version:1.13.1) │ ├─OCC(version:7.6.0) │ ├─Python(version:3.7.0) │ ├─QuaZIP(version:0.7.3) │ ├─Qwt(version: Qwt:6.1.6 QwtPolar:1.1.1) │ ├─TecIO(version:1.4.2) │ └─VTK(version:9.0.1)
│
└─Zlib
把代码跟特定版本号写死是不优雅的行为,所以当自己编译库时,需要修改FastCAE/cmake/FindXXX.cmake中的对应版本号,以及注意,库之间可能存在依赖,例如OCC和VTK,因此不能单独更新某些特定库。
1. Qt(5.14.2)
不建议从源代码安装Qt,源代码编译过程中会有各种莫名其妙的编译问题。建议使用Qt官方提供的二进制安装文件进行安装,需要注意,选择对应版本的安装文件,不是直接选择最新版本的安装文件。
例如:https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-linux-x64-5.14.2.run
此版本Qt安装需要图形界面,或使用的Shell拥有图形化的能力,以及注册Qt会员并登录。
安装过程较为简单,登录账号,同意协议等等,安装套件需要全部勾选,然后等进度条,安装会很快完成。默认安装路径为
/home/username/Qt5.14.2
安装完成后设置环境变量“~/.bashrc”
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/username/Qt5.14.2/5.14.2/gcc_64/lib/ export PATH=$PATH:/home/username/Qt5.14.2/5.14.2/gcc_64/bin/
如果后面的库找不到此Qt,在cmake中的Qt5_DIR设置为/home/username/Qt5.14.2/5.14.2/gcc_64//lib/cmake/Qt5
Qt5.15版本以后都不在提供独立的离线安装包,只能使用在线安装包。
6. Quazip
QuaZIP是Gilles Vollant的ZIP/UNZIP软件包的简单C ++包装,可用于访问ZIP档案。依赖Qt和zlib,因此只能在Qt之后安装。
依赖zlib
Ubuntu/Debian
sudo apt install zlib1g zlib1g-dev
Fedora
sudo yum install zlib zlib-devel
然后编译源代码,注意设置安装路径:
mkdir build
cd build
ccmake ..
make
make install
QUAZIP_QT_MAJOR_VERSION默认为5,本项目编译需要的也是5。
QuaZIP主页的安装命令比较傻,不参考。
7. QWT
依旧依赖Qt。
解压的代码文件中,打开“qwtconfig.pri”文件。其中
QWT_INSTALL_PREFIX = $$[QT_INSTALL_PREFIX]
unix {
QWT_INSTALL_PREFIX = /home/username/extlib/Qwt-$$QWT_VERSION
# QWT_INSTALL_PREFIX = /usr/local/qwt-$$QWT_VERSION-qt-$$QT_VERSION
}
win32 {
QWT_INSTALL_PREFIX = C:/Qwt-$$QWT_VERSION
# QWT_INSTALL_PREFIX = C:/Qwt-$$QWT_VERSION-qt-$$QT_VERSION
}
unix系统中的QWT_INSTALL_PREFIX,修改为对应的路径名。然后编译:
qmake
make
make install
2. Python(3.7.0)
Python各版本并不向前兼容或向后兼容,所以不能通用,只能编译指定的版本。FastCAE使用版本为Python 3.7.0。
可能需要删除系统原自带的Python,并且确保安装路径文件夹内是空白的,不然make install会报错。
准备基础环境
Fedora
sudo yum install zlib* sudo yum install readline* libdb* libpcap* expat* sudo yum install bzip2* ncurses* xz* lzma* sudo yum install gdbm* sqlite* tk* libffi* sudo yum install openssl openssl-devel
Ubuntu
sudo apt-get install zlib* sudo apt-get install build-essential python-dev python-setuptools python3-pip python-smbus sudo apt-get install libreadline-dev libdb-dev libpcap-dev libexpat1-dev sudo apt-get install libbz2-dev libncurses5-dev xz-utils liblzma-dev sudo apt-get install libncursesw5-dev libgdbm-dev libc6-dev sudo apt-get install libsqlite3-dev tk-dev sudo apt-get install libssl-dev openssl sudo apt-get install libffi-dev
从Python官网下载3.7.0的源代码包:https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
mkdir build
cd build
../configure --enable-shared --prefix=/home/shen/extlib/Python make make install
编译完成后,还需要在/Python/lib文件夹中提供libffi的动态库文件。可以从/usr/lib64中拷贝,也可以自己编译。文件名为libffi.so.8和libffi.so.8.1.0,把这两个文件复制到/Python/lib文件夹中。
3. HDF5&CGNS
参考文章:Linux/HDF5/CGNS-从源代码编译HDF5和CGNS - 流光Light - 博客园 (cnblogs.com)
HDF5限定了版本号1.13.1,该版本官网和github都已不再提供支持和下载。可以从其他网站下载源代码编译。
5. VTK
参考文章:Linux/VTK-从源代码编译VTK - 流光Light - 博客园 (cnblogs.com)
在/extlib/VTK中,如果库的名字是lib64,需要把lib64改名为lib。
8. OCC
参考文章:Linux/OCC-从源代码编译OpenCASCADE - 流光Light - 博客园 (cnblogs.com)
注意,由于OCC依赖VTK,因此需要在VTK之后编译。
1. Gmsh
Gmsh的编译和安装较为简单,从官网下载源代码后,直接编译,目前除4.11.0以外,其他版本源代码编译不会有已知的bug。
参考文章:Gmsh-从源代码编译Gmsh - 流光Light - 博客园 (cnblogs.com)
编译出的Gmsh二进制文件在Gmsh/bin/中,需要把该文件放到Gmsh文件夹中。也就是说,extlib/Gmsh文件夹只需要有Gmsh二进制文件即可。
如果希望使用动态库作为剖分的工具而不是直接使用二进制文件,可以设置“-DENABLE_BUILD_DYNAMIC=1”,此时编译出来的gmsh不能直接运行,必须添加相应的动态库。
9. Zlib
直接编译源代码
mkdir build cd build ../configure --prefix=/home/username/extlib/Zlib make make install
至此,所有依赖库编译完成,可以编译FastCAE源代码了。
备注:
TecIO不是开源代码,无法从源代码编译。

浙公网安备 33010602011771号