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

#### 操作步骤

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

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


3. 执行以下命令解压安装包。

```
tar -xvf fvcom-4.1.tar.gz
```


4. 执行以下命令进入解压后目录。

```
cd FVCOM4.1
```


5. 执行以下命令复制“make.inc_example”文件并更名为“make.inc”。

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


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

```
ln -sf FVCOM_source/make.inc ./
```


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

  a. 打开“make.inc”文件。

```
vi make.inc
```


  b. 按“i”进入编辑模式，修改第51、79、80、97和99行的内容。
    第51行：

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


    需消除“/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的内容：

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


    第98行修改未#注释IOINCS的内容：

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


    请参考下图，注释并添加图中内容：

    执行7.a之后，按“Esc”键，输入“:set nu”，按“Enter”即可显示出行号。

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

  a. 创建环境变量文件。

```
vi env-fvcom.sh
```


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

```
export CXX=mpicxx
export CC=mpicc
export MPI_HOME=/path/to/HMPI
export PATH=$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
export HDF5=/path/to/HDF5
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
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
9. 执行以下命令加载环境变量。

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


10. 执行以下命令进入metis安装路径。

```
cd ./METIS_source
```


11. 执行以下命令解压metis安装包。

```
tar -zxvf metis.tgz
cd metis
sed -i 's/log2/log2_function/g' *.*
```


12. 执行以下命令创建相应目录。

```
mkdir -p
/path/to/FVCOM
/FVCOM4.1/FVCOM_source/libs/install/lib
mkdir -p
/path/to/FVCOM
/FVCOM4.1/FVCOM_source/libs/install/include
mkdir -p
/path/to/FVCOM
/FVCOM4.1/FVCOM_source/libs/install/bin
```


13. 执行以下命令编译安装metis库。

```
make
make install
```


14. 执行以下命令进入julian安装路径。

```
cd ../../FVCOM_source/libs
```


15. 执行以下命令解压julian.tgz安装包。

```
tar -zxvf julian.tgz
```


16. 执行以下命令进入解压后路径。

```
cd julian
```


17. 执行以下命令编译安装julian库。

```
make
make install
```


18. 执行以下命令进入FVCOM安装路径。

```
cd
/path/to/FVCOM
/FVCOM4.1/FVCOM_source
```


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

  a. 打开“mod_newinp.F”文件。

```
vi mod_newinp.F
```


  b. 按“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
```


    修改第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)
```


    执行19.a之后，按“Esc”键，输入“:set nu”，按“Enter”即可显示出行号。

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
20. 执行以下命令修改“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
```


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

  a. 打开“mod_utils.F”文件。

```
vi mod_utils.F
```


  b. 按“i”进入编辑模式，将其中的ISNAN函数修改为“IEEE USENAN”。
  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
22. 执行以下命令编译安装FVCOM主程序。

```
make
```


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