经验怪谈

技术文章

Nektar++ 5.1 编译

指定 GCC / MPI 包装器,Boost 和 TinyXML 用系统库,避免第三方重复编崩。

2026-09-03 · 科研软件 · 编译与依赖 · HPC / 集群

源码:Nektar++ GitLab。路径按 /opt/software/nektar 示例。

sudo apt update
sudo apt install -y flex bison libboost-all-dev libtinyxml-dev
git clone https://gitlab.nektar.info/nektar/nektar.git /opt/software/nektar
cd /opt/software/nektar
git tag
git checkout v5.1.0
rm -rf build
mkdir build && cd build

原文 clone 地址有时会写成 .g 截断,要用完整的 .git。先 git tag 看有哪些版本,再 checkout。

CMake 里的编译器、MPI、Boost、TinyXML、zlib 路径改成本机实际位置。现场一次用的是 gcc-11 和配套 MPI,命令还在,路径不要照抄:

cmake .. \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_C_COMPILER=/usr/bin/gcc-11 \
  -DCMAKE_CXX_COMPILER=/usr/bin/g++-11 \
  -DTHIRDPARTY_BUILD_BOOST=OFF \
  -DBOOST_ROOT=/usr \
  -DNEKTAR_USE_FFTW=ON \
  -DTHIRDPARTY_BUILD_FFTW=ON \
  -DNEKTAR_USE_MPI=ON \
  -DMPI_C_COMPILER=mpicc \
  -DMPI_CXX_COMPILER=mpicxx \
  -DNEKTAR_USE_TINYXML_STL=ON
make -j$(nproc)
make install

没有 gcc-11 时改成系统里实际的 gcc / g++mpicc / mpicxx 也改成本机 MPI 包装器。Boost 和 TinyXML 用系统库,避免第三方重复编崩。

export PATH=/opt/software/nektar/build/dist/bin:$PATH

可执行文件目录以 make install 的 prefix 为准。