WRF-Hydro在Ubuntu 22.04 LTS上的系统化编译与部署指南

张开发
2026/4/11 8:17:46 15 分钟阅读

分享文章

WRF-Hydro在Ubuntu 22.04 LTS上的系统化编译与部署指南
1. 环境准备与系统配置在开始WRF-Hydro的编译安装之前我们需要确保Ubuntu 22.04 LTS系统已经做好了充分准备。我建议使用全新的系统环境这样可以避免各种依赖冲突问题。实测下来8GB内存和50GB存储空间是最低配置要求如果条件允许16GB内存会让编译过程更加顺畅。首先更新系统软件包是个好习惯sudo apt update sudo apt upgrade -y接下来安装基础编译工具链这是后续所有工作的基石sudo apt install -y gcc g gfortran make cmake我习惯创建一个专门的项目目录来管理所有相关文件这样可以保持工作区整洁mkdir -p ~/wrf_hydro_project/{sources,apps} export SOURCES~/wrf_hydro_project/sources export APPS~/wrf_hydro_project/apps注意建议将上述环境变量写入~/.bashrc文件这样每次打开新终端时都会自动加载。可以使用echo export SOURCES~/wrf_hydro_project/sources ~/.bashrc这样的命令来追加。2. 依赖库的编译与安装2.1 MPICH并行计算环境WRF-Hydro需要MPI并行计算支持我们选择MPICH作为实现方案。最新稳定版是4.1.2下载和安装步骤如下wget -P $SOURCES https://www.mpich.org/static/downloads/4.1.2/mpich-4.1.2.tar.gz tar -xzf $SOURCES/mpich-4.1.2.tar.gz -C $SOURCES cd $SOURCES/mpich-4.1.2 ./configure --prefix$APPS/mpich --enable-fastall make -j$(nproc) make install这里有几个实用技巧-j$(nproc)参数会使用所有CPU核心进行编译大幅加快速度如果遇到权限问题可以在configure时加上--enable-shared选项安装完成后记得将MPICH加入PATHexport PATH$APPS/mpich/bin:$PATH2.2 NetCDF及其依赖库NetCDF是WRF-Hydro的核心依赖需要先安装zlib和HDF5。这里我推荐使用统一的安装前缀# 安装zlib wget -P $SOURCES https://www.zlib.net/zlib-1.2.13.tar.gz tar -xzf $SOURCES/zlib-1.2.13.tar.gz -C $SOURCES cd $SOURCES/zlib-1.2.13 ./configure --prefix$APPS/netcdf make -j$(nproc) make install # 安装HDF5 wget -P $SOURCES https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.2/src/hdf5-1.12.2.tar.gz tar -xzf $SOURCES/hdf5-1.12.2.tar.gz -C $SOURCES cd $SOURCES/hdf5-1.12.2 ./configure --prefix$APPS/netcdf --with-zlib$APPS/netcdf --enable-hl --enable-fortran make -j$(nproc) make installNetCDF需要分C和Fortran两个版本安装这里有个坑我踩过多次必须先设置好环境变量export CPPFLAGS-I$APPS/netcdf/include export LDFLAGS-L$APPS/netcdf/lib export LD_LIBRARY_PATH$APPS/netcdf/lib:$LD_LIBRARY_PATH然后安装NetCDF-Cwget -P $SOURCES https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz tar -xzf $SOURCES/netcdf-c-4.9.2.tar.gz -C $SOURCES cd $SOURCES/netcdf-c-4.9.2 ./configure --prefix$APPS/netcdf --disable-dap make -j$(nproc) make install最后安装NetCDF-Fortranwget -P $SOURCES https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.1/netcdf-fortran-4.6.1.tar.gz tar -xzf $SOURCES/netcdf-fortran-4.6.1.tar.gz -C $SOURCES cd $SOURCES/netcdf-fortran-4.6.1 ./configure --prefix$APPS/netcdf make -j$(nproc) make install3. 环境变量配置所有依赖安装完成后需要正确配置环境变量。我建议将这些设置永久保存在~/.bashrc中echo export PATH$APPS/mpich/bin:$APPS/netcdf/bin:\$PATH ~/.bashrc echo export NETCDF$APPS/netcdf ~/.bashrc echo export LD_LIBRARY_PATH$APPS/netcdf/lib:$APPS/mpich/lib:\$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc验证安装是否成功nc-config --all # 检查NetCDF配置 mpiexec --version # 检查MPICH安装4. WRF-Hydro本体编译4.1 获取源代码推荐从官方GitHub仓库获取最新稳定版wget -P $SOURCES https://github.com/NCAR/wrf_hydro_nwm_public/archive/refs/tags/v5.2.0.tar.gz tar -xzf $SOURCES/v5.2.0.tar.gz -C $SOURCES cd $SOURCES/wrf_hydro_nwm_public-5.2.0/trunk/NDHMS4.2 配置编译环境复制并修改环境配置模板cp template/setEnvar.sh . sed -i s/export WRF_HYDRO0/export WRF_HYDRO1/ setEnvar.sh echo export WRFIO_NCD_LARGE_FILE_SUPPORT1 setEnvar.sh source setEnvar.sh4.3 编译安装运行配置脚本./configure选择选项2Linux系统gfortran编译器然后开始编译./compile_offline_NoahMP.sh setEnvar.sh compile.log 21 tail -f compile.log编译过程可能需要30分钟到2小时不等取决于硬件性能。如果一切顺利最后会看到Executables successfully built的消息。生成的运行文件位于Run目录下。5. 常见问题排查在实际项目中我遇到过几个典型问题HDF5版本兼容性问题如果遇到奇怪的链接错误尝试使用HDF5 1.10.x版本而非最新版。Ubuntu 22.04的默认库有时会冲突。内存不足导致编译失败可以尝试减少并行编译线程数make -j4代替make -j$(nproc)Fortran模块加载错误确保NetCDF-Fortran安装正确环境变量中包含了Fortran库路径MPI通信错误测试MPICH是否正常工作mpiexec -n 4 hostname应该能输出4行主机名对于更复杂的问题建议查看config.log和compile.log中的详细错误信息。WRF-Hydro社区论坛也是很好的求助资源。

更多文章