---
title: 编译和安装
description: "1. SVN检出获取ROMS源码。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/openmind_kunpengroms_02_0011.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/prtg-osc/openmind_kunpengroms_02_0011.html
indexId: fbd28c1b28da69a13daa7fa28e8be7e815dab12dca991343fda0a238170c7a8775
---
# 编译和安装

#### 操作步骤

1. SVN检出获取ROMS源码。
  建立一个新文件夹，将ROMS源码检出到文件夹中，获取源码需要注册帐户。

```
cd
/path/to/ROMS
mkdir ROMS_4.0
svn checkout --username 帐户名 --password 密码 https://www.myroms.org/svn/src/trunk ROMS_4.0
```


  例如：

  使用HPC/Huawei12#$的帐户及密码进行源码检出，命令如下：

```
svn checkout --username HPC --password Huawei12#$ https://www.myroms.org/svn/src/trunk ROMS_4.0
```


  源码文件结构如下：

2. 自定义build脚本。

  a. 为了在使用中对源码内容不做修改，执行以下命令，新建“ROMSProjects”文件夹用于ROMS的编译运行，upwelling是源码包中自带的默认算例。

```
cd
/path/to/ROMS
mkdir ROMSProjects
cd ROMSProjects
mkdir upwelling
cd upwelling
```


  b. 执行以下命令，复制以下文件到“upwelling”目录中。

```
cp
/path/to/ROMS
/ROMS_4.0/ROMS/Bin/build_roms.sh
.
cp
/path/to/ROMS
/ROMS_4.0/ROMS/
External/roms_upwelling.in .
cp
/path/to/ROMS
/ROMS_4.0/ROMS/
External/varinfo.dat .
cp
/path/to/ROMS
/ROMS_4.0/ROMS/
Include/upwelling.h .
```


  c. 执行以下命令编辑“build_roms.sh”文件。

    1. 打开“build_roms.sh”文件。

```
vi build_roms.sh
```


    2. 按“i”进入编辑模式。

      - 设置ROMS根目录和upwelling路径，修改以下内容。

```
export ROMS_APPLICATION=UPWELLING
export MY_ROOT_DIR=
/path/to/ROMS
export MY_PROJECT_DIR=${MY_ROOT_DIR}/ROMSProjects/upwelling
export MY_ROMS_SRC
=
/path/to/ROMS
/ROMS_4.0
```


      - 设置编译选项，修改以下内容。

```
export USE_MPI=on
export USE_MPIF90=on
export which_MPI=openmpi
export FORT=flang
export USE_NETCDF4=on
```


        将 export USE_MY_LIBS=no 注释掉，使用 export USE_MY_LIBS=yes。

    3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
3. 执行以下命令编辑“my_build_path.sh”文件。

  a. 打开“my_build_path.sh”文件。

```
cd
/path/to/ROMS
/ROMS_4.0/Compilers
vi my_build_path.sh
```


  b. 按“i”进入编辑模式，修改如下内容。
    将第83行的gfortran改为flang。

    将第87行的MPI_ROOT修改为MPI_ROOT=/path/to/hypermpi/hmpi。

    将第295和296行的gfortran改为flang。

    将第311行的MPI_ROOT修改为MPI_ROOT=/path/to/hypermpi/hmpi。

    将第330行的NETCDF=改为NETCDF=/path/to/NETCDF。

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

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
4. 执行以下命令将“Linux-flang.mk”文件放入/path/to/ROMS/ROMS_4.0/Compilers/。

```
cd
/path/to/ROMS
/ROMS_4.0/Compilers/
```


  Linux-flang.mk 编写如下：

```
cp Linux-gfortran.mk ../
mv Linux-gfortran.mk Linux-flang.mk
vi Linux-flang.mk
```


  修改方式如下：

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

5. 执行以下命令修改“roms_upwelling.in”文件。

  a. 打开“roms_upwelling.in”文件。

```
cd
/path/to/ROMS
/ROMSProjects/upwelling/
vi roms_upwelling.in
```


  b. 按“i”进入编辑模式，修改文件中VARNAME为varinfo.dat的路径。

```
VARNAME =
/path/to/ROMS
/ROMSProjects/upwelling/varinfo.dat
```


    设置NtileI、NtileJ，二者的乘积应与运行时设置的np（核心数量）相等。

    NtileI=2

    NtileJ=4

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
6. 执行以下命令进行安装。

```
chmod 777 build_roms.sh
chmod 777
/path/to/ROMS
/ROMS_4.0/ROMS/Bin/cpp_clean
chmod 777
/path/to/ROMS
/ROMS_4.0/ROMS/Bin/sfmakedepend
./build_roms.sh -j
```


  目录下生成可执行文件 romsM 且安装未报错，则安装成功。
