---
title: 编译和安装
description: "1. 使用PuTTY工具，以root用户登录服务器。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpengwrf_02_0013.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpengwrf_02_0013.html
indexId: 81789063840ecac711bf2c1d79e936dd024e05ea4c3d473e916e3b5c702cec1365
---
# 编译和安装

#### 操作步骤

1. 使用PuTTY工具，以root用户登录服务器。
2. 执行以下命令解压WRF安装包。

```
cd
/path/to/WRF
tar -xvf WRF-3.8.1.tar.gz
```


3. 执行以下命令进入WRF源码目录。

```
cd WRF-3.8.1
```


4. 执行以下命令修改“arch/configure_new.defaults”文件。

  a. 打开“arch/configure_new.defaults”文件。

```
vim arch/configure_new.defaults
```


  b. 按“i”进入编辑模式，在第1856行之前添加如下内容。

```
################################################## #########
#ARCH   Linux   aarch64,gnu OpenMPI #serial smpar dmpar dm+sm
DESCRIPTION     =       GNU ($SFC/$SCC)
DMPARALLEL      =        1
OMPCPP          =        -D_OPENMP
OMP             =        -fopenmp
OMPCC           =        -fopenmp
SFC             =       gfortran
SCC             =       gcc
CCOMP           =       gcc
DM_FC           =       mpif90 -f90=$(SFC)
DM_CC           =       mpicc -cc=$(SCC) -DMPI2_SUPPORT
FC              =       CONFIGURE_FC
CC              =       CONFIGURE_CC
LD              =       $(FC)
RWORDSIZE       =       CONFIGURE_RWORDSIZE
PROMOTION       =       #-fdefault-real-8
ARCH_LOCAL      =       -DNONSTANDARD_SYSTEM_SUBR  -DWRF_USE_CLM
CFLAGS_LOCAL    =       -w -O3 -c -march=armv8.2-a -L/
path/to/MATH
/lib -lmathlib
LDFLAGS_LOCAL   =
CPLUSPLUSLIB    =
ESMF_LDFLAG     =      $(CPLUSPLUSLIB)
FCOPTIM         =       -O3 -ftree-vectorize -funroll-loops -march=armv8.2-a -L/
path/to/MATH
/lib -lmathlib
FCREDUCEDOPT    =       $(FCOPTIM)
FCNOOPT         =       -O0
FCDEBUG         =       # -g $(FCNOOPT)  # -fbacktrace -ggdb-fcheck=bounds,do,mem,pointer -ffpe-trap=invalid,zero,overflow
FORMAT_FIXED    =       -ffixed-form
FORMAT_FREE     =       -ffree-form -ffree-line-length-none
FCSUFFIX        =
BYTESWAPIO      =       -fconvert=big-endian -frecord-marker=4
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO)
FCBASEOPTS      =       $(FCBASEOPTS_NO_G) $(FCDEBUG)
MODULE_SRCH_FLAG =
TRADFLAG        =      -traditional
CPP             =      /lib/cpp -P
AR              =      ar
ARFLAGS         =      ru
M4              =      m4 -G
RANLIB          =      ranlib
RLFLAGS         =
CC_TOOLS        =      $(SCC)
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
5. 执行以下命令设置编译前环境。

```
export WRFIO_NCD_LARGE_FILE_SUPPORT=1
export NETCDF=
/path/to/NETCDF
export HDF5=
/path/to/HDF5
export PNETCDF=
/path/to/PNETCDF
export CPPFLAGS="-I$HDF5/include -I$PNETCDF/include -I$NETCDF/include"
export LDFLAGS="-L$HDF5/lib -L$PNETCDF/lib -L$NETCDF/lib -lnetcdf -lnetcdff -lpnetcdf -lhdf5_hl -lhdf5 -lz"
```


6. 执行以下命令安装tirpc。

```
yum install libtirpc-devel
export C_INCLUDE_PATH=/usr/include/tirpc
export CPLUS_INCLUDE_PATH=/usr/include/tirpc
```


7. 执行以下命令开始生成配置文件。

```
echo 4 | ./configure
```


8. 执行以下命令修改“./configure.wrf”文件。

  a. 打开“./configure.wrf”文件。

```
vim ./configure.wrf
```


  b. 按“i”进入编辑模式，找到"LIB_EXTERNAL"，大约在第209行，在末尾加上"-ltirpc"。

```
LIB_EXTERNAL    = \
-L$(WRF_SRC_ROOT_DIR)/external/io_netcdf -lwrfio_nf -L/path/to/NETCDF/lib -lnetcdff -lnetcdf  -L$(WRF_SRC_ROOT_DIR)/external/io_pnetcdf -lwrfio_pnf -L/path/to/PNETCDF/lib -lpnetcdf   -L/path/to/HDF5/lib -lhdf5_fortran -lhdf5 -lm -lz
-ltirpc
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
9. 执行以下命令修改“./phys/module_cu_g3.F”文件。

  a. 打开“./phys/module_cu_g3.F”文件。

```
vim ./phys/module_cu_g3.F
```


  b. 按“i”进入编辑模式，修改第3125行的内容。

```
integer,  dimension (33) :: seed
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
在WRF 4.1.2版本安装过程中，本步骤可省略。


10. 执行以下命令加载编译器和OpenMPI环境变量。

```
export PATH=
/path/to/GNU
/bin:
/path/to/OPENMPI
/
bin:$PATH
export LD_LIBRARY_PATH=
/path/to/GNU
/
lib64:
/path/to/OPENMPI
/
lib:$LD_LIBRARY_PATH
```


  如果此前已经声明过编译器和OpenMPI的环境变量，本步骤可省略。

11. 执行以下命令进行编译安装。

```
./compile -j 16 em_real 2>&1 | tee -a compile.log
```


  如果编译中出现"Fatal Error: Cannot open module file ‘module_initialize_real.mod’ for reading at (1): No such file or directory"，但module_initialize_real.mod文件确实已经在main目录下生成了，再次执行命令./compile -j 16 em_real 2>&1 | tee -a compile.log即可完成编译。

  编译结束后回显如下图。

12. 执行以下命令验证是否安装成功。

```
ls main
```


  回显如下图，生成了“wrf.exe”可执行文件，表明安装成功，主程序安装时间在10分钟左右。
