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

#### 操作步骤

1. 使用PuTTY工具，以root用户登录服务器。
2. 执行以下命令进入FVCOM目录。

```
cd
/path/to/
FVCOM
```


3. 执行以下命令解压并编辑配置文件。

```
tar -xvf fvcom-4.1.tar.gz
cd FVCOM4.1
```


4. 配置相关文件。

  - 执行以下命令复制“make.inc_example”文件为“make.inc”。

```
cp
Examples/Estuary/make.inc_example FVCOM_source/make.inc
```


  - 执行以下命令创建“make.inc”文件软链接。

```
l
n -sf FVCOM_source/make.inc ./
```


  - 执行以下命令编辑“make.inc”文件。

```
vim make.inc
```

按“i”进入编辑模式，修改以下内容。
第51行。

```
TOPDIR = /path/to/FVCOM/FVCOM4.1/FVCOM_source
```

第79、80行。

```
LIBDIR = -L$(INSTALLDIR)/lib -L../METIS_source/metis -L./libs/julian
INCDIR = -I$(INSTALLDIR)/include -I../METIS_source/metis -I./libs/julian
```

第97行。

```
IOLIBS = -L/path/to/NETCDF/lib -L/path/to/HDF5/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz -lcurl -lm
```

第98行。

```
IOINCS = -I/path/to/NETCDF/include -I/path/to/HDF5/include
```

找到并注释掉并添加以下内容。

```
#  Intel/MPI Compiler Definitions (SMAST)
#--------------------------------------------------------------------------
#         CPP      = /usr/bin/cpp
#         COMPILER = -DIFORT
#         CC       = mpicc
#         CXX      = mpicxx
#         CFLAGS   = -O3
#         FC       = mpif90
#         DEBFLGS  = -check all traceback
# Use 'OPT = -O0 -g'  for fast compile to test the make
# Use 'OPT = -xP' for fast run on em64t (Hydra and Guppy)
# Use 'OPT = -xN' for fast run on ia32 (Salmon and Minke)
#         OPT      = -O0 –g
#         OPT      = -axN –xN
#         OPT      = -O3
#  gfortran defs
#--------------------------------------------------------------------------
CPP      = /usr/bin/cpp
COMPILER = -DGFORTRAN
CC       = mpicc
CXX      = mpicxx
FC       = mpif90
DEBFLGS  =
OPT      = -O3 -ffixed-line-length-none -ffree-form -ffree-line-length-none
CLIB     =
```

按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
5. 执行以下命令创建编译环境变量文件。

```
vim env-fvcom.sh
```


  按“i”进入编辑模式，添加如下内容。

```
export GCC_HOME=
/path/to/GNU
export PATH=$GCC_HOME/bin:$PATH
export LD_LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64:$LD_LIBRARY_PATH
export MPI_HOME=
/path/to/OPENMPI
export PATH=$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
export HDF5=
/path/to/HDF5/install
export PATH=$HDF5/bin:$PATH
export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH
export NETCDF=
/path/to/NETCDF
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
```


  按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。

6. 执行以下命令加载环境变量。

```
source env-fvcom.sh
```


7. 执行以下命令编辑“mod_newinp.F”文件。

```
vim mod_newinp.F
```


  按“i”进入编辑模式。

  第一个“contains”语句下修改和添加以下内容。

```
!----------------------------------------
! functions
!----------------------------------------
contains
Character( Len = 256 ) Function N_Fmt( c , n )
Character( Len = * ) , Intent( IN ) :: c
Integer , Intent( IN ) :: n
integer :: i , j
character( len = 16 ) :: cn
i = index( c , '<' )
j = index( c , '>' )
write( cn , '(g0)' ) n
N_Fmt = c(:i-1) // Trim(adjustL(cn)) // c(j+1:)
End Function N_Fmt
```


  按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。

8. 执行以下命令修改第352、421、494、567行的内容。
  第352行。

```
write(*,N_Fmt('(A20,<size>F10.4)',SIZE))trim(argname)//': ',fval(1:SIZE)
```


  第421行。

```
write(*,N_Fmt('(A20,<size>I10)',SIZE))trim(argname)//': ',ival(1:SIZE)
```


  第494行。

```
write(*,N_Fmt('(A20,<size>L10)',SIZE))trim(argname)//': ',cval(1:SIZE)
```


  第567行。

```
write(*,N_Fmt('(A20,<size>A10)',SIZE))trim(argname)//': ',sval(1:SIZE)
```


  按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。

9. 执行以下命令修改“mod_scal.F”、“internal_step.F”、“adv_t.F”、“adv_s.F”文件，对文件中以“IF(BACKWARD_ADVECTION”开头的语句进行相应修改，修改“==”为“.eqv.”，修改“/=”为“.neqv”。

```
sed -i 's/\/=\.TRUE\./\.neqv\.\.TRUE\./g' mod_scal.F
sed -i 's/==\.TRUE/\.eqv\.\.TRUE/g' internal_step.F
sed -i 's/==\.FALSE\./\.eqv\.\.FALSE\./g' adv_t.F
sed -i 's/==\.FALSE\./\.eqv\.\.FALSE\./g' adv_s.F
```


10. 执行以下命令编辑“mod_utils.F”文件。

```
vim mod_utils.F
```


  按“i”进入编辑模式，将其中的ISNAN函数修改为“IEEE USENAN”。

  按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。

11. 执行以下命令编译安装FVCOM主程序。

```
make
```


  安装成功后，可使用ll命令在当前目录查看生成的可执行文件“fvcom”。
