本來這個問題真的沒必要寫的,可是真的困擾我太久%>_<%,決定還是記錄一下。
首先,最權威清晰的安裝文檔還是官方的:
Building the NetCDF-4.2 and later Fortran libraries (寫此文時,最近版為4.2)
那這個文檔最開始就告訴我們,自NetCDF庫4.2版本以后,Fortran的庫和C的庫就要分開build啦!而且要裝Fortran的庫必須先裝好C的庫。
所以先裝C的庫咯:仍然官方文檔:
Getting and Building NetCDF-C (寫此文時,最新版本為4.3.2)
那這個文檔告訴我們:要裝NetCDF-C的庫,有三個(其實是兩個)必須裝的:zlib,HDF5,(curl)。
綜上,需要下載4個tar的包。點我們下載:zilb & hdf5 netcdf-c-4.3.2 netcdf-fortran-4.2
參照官方文檔,zlib和hdf5的安裝比較簡單,指定一下安裝路徑即可:
build zlib:
$ ./configure --prefix=${DIR1}
$ make check install
build HDF5:
$ ./configure --with-zlib=${DIR1} --prefix=${DIR1}
$ make
$ make check
$ make install
其中,比較容易出問題的是HDF5的安裝,參閱HDF5官方文檔
成功之后,就可以進行netcdf-c和netcdf-fortran庫的安裝了,這里有個問題要注意:編譯安裝庫時候的編譯器要和你以后編譯你的Fortran代碼使用的編譯器一致,否者以后在編譯Fortran源代碼其中用到netcdf庫時會出錯。以我為例:我平時用Intel的編譯器,所以此時在安裝這兩個庫的時候,分別用Intel C++ Composer和Intel Fortran Composer進行編譯(后面簡稱icc和ifort)
User and Reference Guide for the Intel® C++ Compiler 14.0
User and Reference Guide for the Intel® Fortran Compiler 14.0
Using Intel Compilers for Linux Under Redhat Enterprise Linux or CentOS
安裝好了icc和ifort以后均需要設置一下環境變量:(最好添加到~/.bashrc文件中)
source <compiler_install_dir>/bin/compilervars.sh intel64
接下來就是用Intel編譯器編譯安裝netcdf庫了:
Building NetCDF* with the Intel® compilers官方文檔
關鍵就是設置幾個編譯選項:
export CC=icc export CXX=icpc export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=ifort export FC=ifort export F90=ifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPP='icc -E' export CXXCPP='icpc -E'
對於c庫:
export DIR1=/snfs01/ff/netcdf_4.3.2
$ CPPFLAGS=-I${DIR1}/include LDFLAGS=-L${DIR1}/lib ./configure --prefix=${DIR1} --disable-dap-remote-tests
$ make check install
對於Fortran庫:
首先仍然如上設置編譯選項,然后假設你的c庫安裝在路徑${DIR1}:
export LD_LIBRARY_PATH=${DIR1}/lib:${LD_LIBRARY_PATH}
然后和c庫的編譯過程一樣:
CPPFLAGS=-I${DIR1}/include LDFLAGS=-L${DIR1}/lib ./configure --prefix=${DIR1} make make check make install
裝好了NetCDF-Fortran庫了以后如何使用?參考文檔: