写这个文章,主要有两个目的:一个是自己备忘;另一个是分享. 方便自己也帮助他人.
NetCDF全称为network Common Data Format,中文译法为“网络通用数据格式”,对程序员来说,它和zip、jpeg、bmp文件格式类似,都是一种文件格式的标准。netcdf文件开始的目的是用于存储气象科学中的数据,现在已经成为许多数据采集软件的生成文件的格式。
注:netcdf4.2以上的版本c库和fortran库分开,要先安装netcdf-c,然后再安装netcdf-fortran
平台:centos6.9
安装步骤:
(1)编译环境的设置:
终端中输入如下语句:本人使用intel的编译器来编译,其他编译器(如PGI,GNU)对应修改。
export CC=icc
export CXX=icpc
export FC=ifort
export F90=ifort
export F77=ifort
安装之前的说明:
1. 由于安装netcdf4需要zlib和hdf5,我们将把这些安装在同一个目录下,方便后面的环境变量配置.
2. 安装使用的是root用户,如果读者用户没有root权限,可以使用sudo来提升权限。
(2)安装zlib(应该是用于数据压缩,szip安装同zlib)
1.下载地址:ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/
2.解压 tar -zxvf zlib-1.2.8.tar.gz
3.配置安装信息. ./configure --prefix=/usr/local/netcdf4-needed
其中可以使用 ./configure--help来查看可以使用那些选项。这里选择默认选项安装。
4.编译. make
5. 检查. make check
6.安装. make install
安装完成之后会在/usr/local/netcdf4-needed这个目录下生成三个文件lib include share
(3)安装hdf5
hdf5是为了使用netcdf-4特性,这个特性需要hdf5来支持,这个特性支持2G以上的文件。
1.下载地址:ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/
2.解压 tar -zxvf hdf5-1.8.13.tar.gz
3.配置安装信息. ./configure --prefix=/usr/local/netcdf4-needed --with-zlib=/usr/local/netcdf4-needed/
4.编译 make
5. 检查编译信息 make check
6. 安装 make install
安装完成后,会被安装进 /usr/local/netcdf4-needed目录下的四个文件lib include share bin 中.
(4)安装netcdf-c
1. 下载地址 ftp://ftp.unidata.ucar.edu/pub/netcdf/old/
2. 解压 tar -zxvf netcdf-4.3.2.tar.gz
3.配置安装信息 CPPFLAGS=-I/usr/local/netcdf4-needed/include LDFLAGS=-L/usr/local/netcdf4-needed/lib ./configure --prefix=/usr/local/netcdf4-needed
关于CPPFLAGS和LDFLAGS的用法参考这篇文章:https://blog.csdn.net/tuhuolong/article/details/7843352
4.编译 make
5.编译信息检查 make check
6.安装 make install
(5)安装netcdf-fortran
1.告知库文件位置.终端中输入 export LD_LIBRARY_PATH=/usr/local/netcdf4-needed/lib:$LD_LIBRARY_PATH
2. 解压tar -zxvf netcdf-fortran-4.4.0.tar.gz
3.配置安装信息. CPPFLAGS=-I/usr/local/netcdf4-needed/include LDFLAGS=-L/usr/local/netcdf4-needed/lib ./configure --prefix=/usr/local/netcdf4-needed --disable-dap
注意:此处如果没有输入 --disable-dap的话,要预先安装curl. dap应该是用于远程数据处理相关的,这里不安装也行。
4.编译 make
5.编译信息检查 make check
6.安装 make install
(6)配置环境变量
1.终端中输入 vim ~/.bashrc 按i进入插入模式,输入如下信息
#netcdf4.4
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-I/opt/openmpi/1.6.5/include'
export LDFLAGS='-L/usr/local/netcdf4-needed/lib'
输入完成保存退出(先按esc键,然后输入:wq保存退出)
2.使环境变量生效
终端中输入 source ~/.bashrc
(7)查看安装了那些组件
[hxz@hxz~]$ nc-config --all
ThisnetCDF 4.3.2 has been built with the following features:
--cc -> icc
--cflags -> -I/usr/local/netcdf4-needed/include-I/usr/local/netcdf4-needed/include
--libs -> -L/usr/local/netcdf4-needed/lib -lnetcdf
--has-c++ -> no
--cxx ->
--has-c++4 -> no
--cxx4 ->
--fc -> ifort
--fflags -> -I/usr/local/netcdf4-needed/include
--flibs -> -L/usr/local/netcdf4-needed/lib -lnetcdff-L/usr/local/netcdf4-needed/lib -lnetcdf -lnetcdf
--has-f90 -> no
--has-dap -> no
--has-nc2 -> yes
--has-nc4 -> yes
--has-hdf5 -> yes
--has-hdf4 -> no
--has-pnetcdf->no
--prefix -> /usr/local/netcdf4-needed
--includedir->/usr/local/netcdf4-needed/include
--version -> netCDF 4.3.2
[hxz@hxz~]$ nf-config --all
ThisnetCDF-Fortran 4.4.0 has been built with the following features:
--cc -> icc
--cflags -> -I/usr/local/netcdf4-needed/include-I/usr/local/netcdf4-needed/include
--fc -> ifort
--fflags -> -I/usr/local/netcdf4-needed/include
--flibs -> -L/usr/local/netcdf4-needed/lib -lnetcdff-L/usr/local/netcdf4-needed/lib -lnetcdf -lnetcdf
--has-f90 -> no
--has-f03 -> yes
--has-nc2 -> yes
--has-nc4 -> yes
--prefix -> /usr/local/netcdf4-needed
--includedir->/usr/local/netcdf4-needed/include
--version -> netCDF-Fortran 4.4.0
补充:这里我没有安装curl,所以就没有选择dap组件。如果需要dap组件,可以先安装curl,然后在安装netcdf-fortran的时候不要输入--disable-dap.但是可能在安装curl的过程中make check之后可能会出现一个错误,虽然不影响最后的安装,但是对于强迫症的人群这个是受不了的。具体看着办把。。。
附录:netcdf4.1.3安装的简单说明。
其实,其他版本的netcdf的安装思路都是差不多的,出现问题主要还是编译环境或者相关库文件的设置不合理导致的。
zlib,hdf5同上,因为netcdf4.1.3版本的c库和fortran库是合并在一起的,所以安装就少了上面netcdf-fortran安装这一步。其他的环境变量配置等同上。
CPPFLAGS=-I/usr/local/netcdf4-needed/include LDFLAGS=-L/usr/local/netcdf4-needed/lib ./configure --prefix=/usr/local/netcdf4-needed/