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不是开源代码,无法从源代码编译。

posted @ 2022-12-13 18:09  流光Light  阅读(567)  评论(0)    收藏  举报