切换 root 用户执行下列命令
$ sudo su - root
创建 cfd 软件使用的用户组
$ groupadd cfduser
查看是否创建成功
$ cat /etc/group | grep cfduser
在 cfduser 用户组中创建 basilisk 用户
$ useradd -m -s /bin/bash -g cfduser -c "注释" basilisk
查看是否创建成功
$ cat /etc/passwd | grep basilisk
安装vim编辑器,也可以使用vi,emacs等编辑器
$ apt install vim
编辑 /etc/sudoers 文件,为 cfduser 用户组内所有成员添加 sudo 权限,如下图所示:%cfduser ALL=(ALL) ALL
basilisk用户设置密码:
$ echo -e "密码\n重复密码" | passwd basilisk 2>/dev/null
切换至basilisk用户
安装必要的软件包
$ sudo apt install darcs make gawk
darcs也是一个版本控制工具,类似于经常使用的 git
获取basilisk源代码
$ darcs clone http://basilisk.fr/basilisk
如果更新源代码则只需要,进入basilisk目录,执行以下命令
$ darcs pull
然后进行编译
$ make -k clean && make
进入源文件目录进行编译安装
$ cd basilisk/src
$ ln -s config.gcc.config
一般新装的系统默认是不带 c/c++ 和 cmake 编译器的,需要自行安装
$ sudo apt install gcc g++ cmake
编译器安装完成之后再进行编译
$ make
该过程需要等待较长时间,完成后执行以下命令添加环境变量
$ echo "export BASILISK=$PWD" >> ~/.bashrc
$ echo "export PATH=$PATH:$BASILISK" >> ~/.bashrc
执行以下命令
$ sudo apt install gnuplot imagemagick ffmpeg graphviz valgrind gifsicle pstoedit
在python中可以使用Basilisk(我没尝试过)
$ sudo apt install swig libpython3.dev
安装自选库(我也没使用到过)
$ sudo apt install gfortran
$ cd $BASILISK/ppr
$ make
安装文件编辑器
$ sudo apt-get install emacs
查看Basilisk编译器的qcc版本
$ qcc --version
查看C编译器的gcc版本
$ gcc --version
二者的编译器版本一定要一致,否则qcc无法正常将模拟文件编译为可执行文件
在桌面文件夹中创建案例文件
$ mkdir /home/basilisk/Desktop/example
在example中创建bump.c文件编译测试
$ vim bump.c
#include "saint-venant.h"
int main() {
run();
}
编译 bump.c 文件,得到可执行文件 a.out
$ qcc bump.c -lm
执行 a.out 文件
$ ./a.out
得到以下结果
#Quadtree, 0 steps, 0 CPU, 0.001075 real, 0 points.step/s, 5 var
则代表安装成功且运行顺利
正常情况下,ubuntu22.04 版本用户使用 apt 命令默认安装的是 11.4.0 版本的gcc编译器,qcc 是基于 gcc 对模拟文件进行编译的编译工具,因此要求二者版本一致,基本不会遇到文件,如图所示
但是若用户安装了最新发布的ubuntu24.04版本,apt 库中默认安装的 gcc 版本是 13.2.0,虽然basilisk是可以顺利安装的,但是在使用 qcc 编译模拟文件时会报错。所以解决方法是:将 gcc 版本回退或者更新至11.4.0即可,步骤如下:
由于我使用的是ubuntu22.04版本,该版本默认的apt库并没有13.2.0版本的gcc,演示使用9.5.0版本替代
下载 11.4.0 版本的 gcc/g++ 编译器
$ sudo apt install gcc-11 g++-11
切换 gcc 版本至11.4.0,使用 update-alternatives 工具
$ sudo update-alternatives --install /usr/bin/gcc gcc /user/bin/gcc-11 80 --slave /usr/bin/g++ g++ /user/bin/g++-11
上述命令的含义是将gcc编译器的默认版本切换到11.4.0,80是优先级(该优先级只在系统中有多版本的gcc并且是auto模式时才具有作用),数字越大优先级越高,--slave则是代表同时对以下参数执行相同的命令。这样可以使gcc和g++编译器同步进行版本更改。
由于本人使用 ubuntu22.04 版本,所以无法演示 gcc 13.2.0 回退至 11.4.0 的操作,因此使用 gcc 9.5.0 版本代替。分别执行以下命令:
$ sudo update-alternatives --install /usr/bin/gcc gcc /user/bin/gcc-11 80 --slave /usr/bin/g++ g++ /user/bin/g++-11
$ sudo update-alternatives --install /usr/bin/gcc gcc /user/bin/gcc-9 20 --slave /usr/bin/g++ g++ /user/bin/g++-9
该操作是为不同版本的 gcc 编译器设置优先级,如果查看目前 gcc 所使用的版本,则执行以下命令
$ sudo update-alternatives --config gcc
得到如下结果
该工具可以将不同版本的 gcc 编译器进行统一的管理,0 序号代表正在使用的编译器,可以通过输入其他需要选择所需要的版本。
需要与 gcc 同步更改的还有 g++ 和 gcov 两个命令,使用 --slave 进行捆绑更改即可,删除 gcc 的版本则执行以下命令
$ sudo update-alternatives --remove gcc /usr/bin/gcc-9