编译和安装
安装I/O API
- 使用PuTTY工具,以root用户登录服务器。
- 执行以下命令使SMOKE安装运行在csh下。
csh
- 执行以下命令设置环境变量。
setenv SMK_HOME /path/to/SMOKE setenv LD_LIBRARY_PATH /path/to/BISHENG/bisheng-1.3.1/lib:/path/to/HMPI/hmpi-1.0.2/ompi/lib setenv PATH /path/to/HMPI/hmpi-1.0.2/hmpi/bin:/path/to/BISHENG/bisheng-1.3.1/bin:$PATH setenv LD_LIBRARY_PATH /path/to/NETCDF/lib:$LD_LIBRARY_PATH
- 执行以下命令将安装包复制到安装路径下。
cp smoke_v47.gz $SMK_HOME cp smoke_v47.nctox.data.tar.gz $SMK_HOME cp smoke_install.csh $SMK_HOME cp ioapi-3.2.tar.gz $SMK_HOME cd $SMK_HOME source smoke_install_v47.csh setenv BIN Linux2_aarch64
- 执行以下命令解压并重命名ioapi。
tar -xvf ioapi-3.2-2020111.tar.gz mv ioapi-3.2-2020111 ioapi-3.2
- 执行以下命令复制配置文件。
cd ioapi-3.2 cp ioapi/Makeinclude.Linux2_ia64gfort ioapi/Makeinclude.Linux2_aarch64
- 执行以下命令修改“Makeinclude.Linux2_aarch64”配置文件。
- 打开“Makeinclude.Linux2_aarch64”配置文件。
vi ioapi/Makeinclude.Linux2_aarch64
- 按“i”进入编辑模式,修改编译器选项(必要时可用绝对路径)。
CC = mpicc CXX = mpicxx FC = mpif90
注释FSFLAGS关键字对应的行,如#FSFLAGS = -save。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“Makeinclude.Linux2_aarch64”配置文件。
- 执行以下命令复制Makefile。
cp ioapi/Makefile.nocpl ioapi/Makefile
- 执行以下命令复制配置文件。
cp m3tools/Makefile.nocpl m3tools/Makefile
- 执行以下命令修改“Makefile”配置文件。
- 打开“Makefile”配置文件。
vi m3tools/Makefile
- 按“i”进入编辑模式,修改如下内容。
LIBS = -L${OBJDIR} -lioapi -L/path/to/NETCDF/lib -lnetcdff –lnetcdf -L/path/to/HDF5/lib -lhdf5_hl -lhdf5 -lz $(OMPLIBS) $(ARCHLIB) $(ARCHLIBS)
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“Makefile”配置文件。
- 执行以下命令复制配置文件。
cp Makefile.template Makefile
- 执行以下命令编辑配置文件。
- 打开配置文件。
vi Makefile
- 按“i”进入编辑模式。修改如下内容并取消注释(若出现路径问题可以检查BASEDIR下的路径是否正确)。
BIN = Linux2_aarch64 BASEDIR = ${PWD} INSTALL = ${HOME} LIBINST = $(INSTALL)/$(BIN) BININST = $(INSTALL)/$(BIN) CPLMODE = nocpl IOAPIDEFS = "-DIOAPI_NCF4"
修改NCFLIBS项:
NCFLIBS = -L/path/to/NETCDF/lib -lnetcdff -lnetcdf -L/path/to/HDF5/lib -lhdf5_hl -lhdf5 -lz
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开配置文件。
- 执行以下命令编译I/O API。
make BIN=Linux2_aarch64
安装SMOKE
- 使用PuTTY工具,以root用户登录服务器。
- 执行以下命令进入“$SMK_HOME/subsys/smoke/assigns/”目录。
cd $SMK_HOME/subsys/smoke/assigns/
- 执行以下命令修改“ASSIGNS.nctox.cmaq.cb05_soa.us12-nc”文件。
- 执行以下命令修改“Makeinclude”文件。
- 打开“Makeinclude”文件。
cd $SMK_HOME/subsys/smoke/src vi Makeinclude
- 按“i”进入编辑模式,修改如下内容(链接库若报错可以加上库所在的绝对路径,格式为-L/绝对路径)。
INSTDIR = ${OBJDIR}/${BIN} #EFLAG = -extend-source 132 -zero EFLAG = -ffixed-line-length-132 -fno-backslash IOLIB = -L$(IOBIN) -lioapi -L/path/to/NETCDF/lib -lnetcdf -lnetcdff IOBASE = ${SMK_HOME}/ ioapi-3.2
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“Makeinclude”文件。
- 执行以下命令修改“biog/normbeis361.f”文件。
- 执行以下命令修改“emutil/gentpro.f”文件。
- 执行以下命令创建目录。
mkdir ${SMK_HOME}/subsys/smoke/${BIN}
- 执行以下命令运行编译。
source $SMK_HOME/subsys/smoke/assigns/ASSIGNS.nctox.cmaq.cb05_soa.us12-nc make