声明:2019.5.13 目前对于wavewatch4.18版本,虽然都安装成功了,但是在w3_make的时候仍然会报错,正在解决此问题
先供上两篇参考教程
https://blog.csdn.net/schumacher2016/article/details/80850240
https://blog.csdn.net/zhaohaibo_/article/details/88249104
https://blog.csdn.net/tuhuolong/article/details/7843352
WAVEWATCH3需要调用netcdf,netcdf4.1.3以后需要手动安装,zlib,hdf5,netcdf-c,netcdf-fortran,且后一个分别依赖前一个,因此要按顺序安装。
之前在服务器上远程安装了NETCDF4.6.2,已安装成功,但是在运行WAVEWATCH3_4.18编译程式ww3_ounf时,会出现错误,现将netcdf重新安装,版本4.3.2,主要参考黄学智教程https://blog.csdn.net/schumacher2016/article/details/80850240。
以下安装为centos7系统,root用户
1. 指定临时编译环境(本人用的gcc,gfortran)
export CC=gcc
export CXX=g++
export FC=gfortran
export F77=gfortran
export F90=gfortran
1. 安装curl(wavewatch3 4.18好像需要,5.16好像不需要)
mkdir netcdf #存放下载文件文件夹
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/curl-7.26.0.tar.gz
tar -zxvf curl-7.26.0.tar.gz
cd curl-7.26.0
./configure --prefix=/usr/local/netcdf4-needed
make
make check
make install
2.安装zlib
cd netcdf
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8/
./configure --prefix=/usr/local/netcdf4-needed
make
make check
make install #若无报错,则安装成功
cd ..
3. 安装hdf5
hdf5需要用到zlib文件
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/hdf5-1.8.13.tar.gz
tar -zxvf hdf5-1.8.13.tar.gz
cd hdf5-1.8.13
./configure --prefix=/usr/local/netcdf4-needed --with-zlib=/usr/local/netcdf4-needed/
make
make check %如果报错了,则尝试 make & make check ,也许可以,官方说这是这个版本的bug
make install
4. 安装netcdf-c
先加环境变量到 LD_LIBRARY_PATH
中(安装netcdf-c可以暂时不加,但是安装netcdf-fortran必须添加)
export LD_LIBRARY_PATH=/usr/local/netcdf4-needed/lib:$LD_LIBRARY_PATH
# 或者wget ftp://ftp.unidata.ucar.edu/pub/netcdf/old/netcdf-4.3.2.tar.gz
wget https://github.com/Unidata/netcdf-c/archive/v4.3.2.tar.gz #github下载速度较快
tar -zxvf v4.3.2.tar.gz
cd v4.3.2.tar.gz
./configure --prefix=/usr/local/netcdf4-needed --disable-dap CPPFLAGS=-I/usr/local/netcdf4-needed/include LDFLAGS=-L/usr/local/netcdf4-needed/lib #CPPFLAGS配置安装信息,指定c++头文件位置; #LDFLAGS配置安装信息,指定编译优化信息位置
make
make check
make install
5. 安装netcdf-fortran
wget https://github.com/Unidata/netcdf-fortran/archive/v4.4.0.tar.gz
tar -zxvf v4.4.0.tar.gz
cd netcdf-fortran-4.4.0/
./configure --prefix=/usr/local/netcdf4-needed CPPFLAGS=-I/usr/local/netcdf4-needed/include LDFLAGS=-L/usr/local/netcdf4-needed/lib
make
make check
make install
6. 配置环境变量,非常重要的一步
如果只是当前用户使用,则将环境变量路径信息加入~/.bashrc中,并source ~/.bashrc; 如果是系统全局,则加入/etc/bashrc,并重启系统
export NETCDF=/usr/local/netcdf4-needed
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
export CPPFLAGS='-I/usr/local/netcdf4-needed/include'
export LDFLAGS='-L/usr/local/netcdf4-needed/lib'
对于WAVEWATCH而言,还要加入关于netcdf的配置说明,才能使wavewatch正常使用netcdf4
export WWATCH3_NETCDF=NC4
export NETCDF_LIBDIR=/usr/local/netcdf4-needed/lib
export NETCDF_INCDIR=/usr/local/netcdf4-needed/include
export NETCDF_CONFIG=/usr/local/netcdf4-needed/bin/nf-config
后续2019.5.22
命运多舛,我在ubuntu18.01 lts ( window10子系统,试了两个Ubuntu18 )上安装时,按照上述过程,在安装netcdf-c时会报错:
configure: error: Can't find or link to the z library. Turn off netCDF-4 and opendap with --disable-netcdf-4 --disable-dap, or see config.log for errors
初步判断,猜测是zlib没有安装好,或者是netcdf-c在安装时没有配置好安装路径,导致其找不到z library, 几小时后,,,还是没解决,经过查询,发现hdf5用了zlib,参照这篇教程,再加这篇,换了一个版本netcdf-c,问题仍是存在,看起来似乎和操作系统有关系?
后续2019.5.23
回到centos7.0上再试一次,以普通用户安装,在安装时使用sudo授予管理员权限,然后,,在安装netcdf-fortran时,提示:configure: error: netcdf.h could not be found. Please set CPPFLAGS.,喜大普奔!经过查询,解决了该问题,参考气象家园一篇回答,将./configure ... CPPFLAGS... LDFLAGS... 写在一行上,且./configure在第一位
再后续:2019.5.23
在使用wavewatch3 4.18的命令ww3_ounf时,提示: NetCDF: Unknown file format,用ncdump命令打开nc文件时,有的会提示NetCDF: Unknown file format,经查询,按照官网说明,应该是和netcdf-c的版本有关系,应安装netcdf-c 4.5以上版本。
再再后续:2019.5.25
在另外一次安装时,发现在安装到netcdf-fortran时,会提示找不到libnetcdf的某个库文件,经查询,应该是在安装netcdf-fortran时,没有指定到netcdf-c的库文件位置,但是实际上我也指定了,后来将 LD_LIBRARY_PATH的设定放到了 ./configure后面(和CPPFLGAS LDFLAGS 同一行),好像可以解决问题。但同时我也更换了netcdf-c的版本号,不知道和哪个有关系,先记录下来,也希望有了解的人指导下。