一、准备工作
1.1 确保依赖库已安装
在开始 CMAQ 安装前,需要确保以下库已正确安装:
NetCDF(C和Fortran版本)
IOAPI(已编译完成,包含fixed_src目录)
MPICH(并行计算支持)
1.2 设置环境变量(写入 ~/.bashrc)
# CMAQ 主目录export CMAQ_HOME=/home/xianemc1011/WRFHOME/CMAQ# IOAPI 路径(注意:使用 fixed_src 目录,非常重要!)export IOAPI_ROOT=/home/xianemc1011/WRFunzip/ioapi-3.2export IOAPI_INC_DIR=$IOAPI_ROOT/ioapi/fixed_srcexport IOAPI_LIB_DIR=$IOAPI_ROOT/Linux2_x86_64#选项(解决 Fortran 兼容性问题)export FFLAGS="-fallow-argument-mismatch -fallow-invalid-boz"export FCFLAGS="-fallow-argument-mismatch -fallow-invalid-boz"二、CMAQ 源码准备
2.1 解压源码
cd ~/WRFunzipunzip CMAQ-master.zipmv CMAQ-master ~/WRFHOME/CMAQ2.2 目录结构说明

三、编译核心模块
3.1 编译 CCTM(核心化学传输模型)
关键坑:必须先确保 IOAPI 的 fixed_src 目录存在且正确链接
# 检查 IOAPI fixed_src 目录是否存在ls -la $IOAPI_ROOT/ioapi/fixed_src/STATE3.EXT# 如果不存在,需要先生成cd $IOAPI_ROOTmake fixed_src# 确保 CMAQ 使用 fixed_src 目录cd $CMAQ_HOME/lib/x86_64/gcc/ioapi/rm -f include_filesln -sf $IOAPI_ROOT/ioapi/fixed_src include_files编译 CCTM:
cd $CMAQ_HOME/CCTM/scripts./bldit_cctm.csh gcc成功标志: 生成 BLD_CCTM_v532_gcc/CCTM_v532.exe(约 151 MB)
常见错误及解决方案:
错误 | 原因 | 解决方案 |
| CMAQ 使用了错误的 IOAPI 头文件 | 确保 |
| NetCDF 编译时启用了 HDF5 | 重新编译 NetCDF 时添加 |
| 缺少 OpenMP 库 | 在编译脚本中添加 |
3.2 编译 ICON(初始条件生成器)
cd $CMAQ_HOME/PREP/icon/scripts./bldit_icon.csh gcc成功标志: 生成 BLD_ICON_v532_gcc/ICON_v532.exe(约 16.9 MB)
3.3 编译 BCON(边界条件生成器)
cd $CMAQ_HOME/PREP/bcon/scripts./bldit_bcon.csh gcc成功标志: 生成 BLD_BCON_v532_gcc/BCON_v532.exe(约 16.9 MB)
3.4 编译MCIP(气象-化学接口处理器)
关键坑:MCIP的Makefile默认使用Intel编译器,需要手动修改为 GCC
cd $CMAQ_HOME/PREP/mcip/src修改 Makefile:
# 备份原文件cp Makefile Makefile.backup# 编辑 Makefilevim Makefile需要修改的内容:
注释掉 Intel 编译器部分(约第 44-51 行)
取消注释并修改 gfortran 部分(约第 32-42 行)

需要注意FFLAGS增加-fopenmp参数。
编译 MCIP:
make成功标志: 生成 mcip.exe(约 17.5 MB)
常见错误及解决方案:
错误 | 解决方案 |
| 确保使用了 gfortran,而不是 ifort |
| 在 FFLAGS 和 LIBS 中添加 |
| 检查 NETCDF 路径是否正确 |
四、编译 UTIL 工具(可选)
4.1 编译 bldmake
cd $CMAQ_HOME/UTIL/bldmake./bldit_bldmake.csh gcc
成功标志: 生成 bldmake_gcc.exe
五、配置环境变量(永久生效)
将以下内容添加到 ~/.bashrc 文件末尾:
# ========================================# CMAQ 环境变量# ========================================export CMAQ_HOME=/home/xianemc1011/WRFHOME/CMAQ# IOAPI 路径(必须指向 fixed_src)export IOAPI_ROOT=/home/xianemc1011/WRFunzip/ioapi-3.2export IOAPI_INC_DIR=$IOAPI_ROOT/ioapi/fixed_srcexport IOAPI_LIB_DIR=$IOAPI_ROOT/Linux2_x86_64# 兼容性选项(非常重要!)export FFLAGS="-fallow-argument-mismatch -fallow-invalid-boz"export FCFLAGS="-fallow-argument-mismatch -fallow-invalid-boz"# 添加可执行文件到 PATHexport PATH=$CMAQ_HOME/CCTM/scripts/BLD_CCTM_v532_gcc:$PATHexport PATH=$CMAQ_HOME/PREP/icon/scripts/BLD_ICON_v532_gcc:$PATHexport PATH=$CMAQ_HOME/PREP/bcon/scripts/BLD_BCON_v532_gcc:$PATHexport PATH=$CMAQ_HOME/PREP/mcip/src:$PATH使配置生效:
source ~/.bashrc六、验证安装
6.1 检查环境变量
echo $CMAQ_HOMEecho $IOAPI_INC_DIRecho $NETCDF6.2 检查可执行文件
which CCTM_v532.exewhich ICON_v532.exewhich BCON_v532.exe
which mcip.exe6.3 测试运行(预期会因缺少输入数据而报错)
CCTM_v532.exe --helpICON_v532.exeBCON_v532.exe成功标志: 程序正常启动并提示缺少输入文件(如 GRIDDESC not found),说明编译成功。
七、最终安装结果
模块 | 可执行文件 | 大小 | 路径 |
CCTM |
| ~151 MB |
|
ICON |
| ~16.9 MB |
|
BCON |
| ~16.9 MB |
|
MCIP |
| ~17.5 MB |
|
bldmake |
| - |
|
八、常见问题汇总
Q1: STATE3.EXT 语法错误
原因: CMAQ使用了错误的IOAPI头文件目录 解决: 确保$CMAQ_HOME/lib/x86_64/gcc/ioapi/include_files链到 $IOAPI_ROOT/ioapi/fixed_src
Q2: undefined reference to GOMP_*
原因: 缺少 OpenMP 库链接 解决: 在编译脚本的 FFLAGS 和 LIBS 中添加 -fopenmp
Q3: ifort: command not found
原因: MCIP的 Makefile默认使用Intel编译器 解决: 手动修改Makefile,注释掉ifort部分,启用gfortran部分
Q4: NetCDF 相关错误
原因: NetCDF 路径设置不正确或 NetCDF 编译时启用了 HDF5 解决:
检查 $NETCDF/lib 和 $NETCDF/include 是否存在
重新编译 NetCDF 时添加 --disable-netcdf4 --disable-dap
九、运行 CMAQ 需要的数据
编译完成后,运行 CMAQ 还需要:
气象数据(MCIP 输出)
排放数据
初始条件(ICON 输出)
边界条件(BCON 输出)
光解速率数据(JPROC 输出)
网格描述文件(GRIDDESC)
基准测试数据可从 CMAS Center 获取。
教程结束,CMAQ v5.3.2 安装完成!
夜雨聆风