Linux下用Intel編譯器編譯安裝NetCDF-Fortan庫(4.2以后版本)


本來這個問題真的沒必要寫的,可是真的困擾我太久%>_<%,決定還是記錄一下。

首先,最權威清晰的安裝文檔還是官方的:

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)

Intel 編譯器的下載地址

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庫了以后如何使用?參考文檔:

NetCDF Fortran 90 Interface Guide


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com