本来这个问题真的没必要写的,可是真的困扰我太久%>_<%,决定还是记录一下。

首先,最权威清晰的安装文档还是官方的:

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

最新文章

  1. 解决Xcode真机测试时ineligible devices的问题
  2. Android—ZXing二维码扫描遇到的问题
  3. BZOJ 4408 主席数+找规律
  4. [Linux] - Docker pure-ftp使用
  5. requireJS的引用
  6. Android:res之shape制作圆角、虚线、渐变
  7. C/C++与Matlab混合编程
  8. 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块
  9. [英] 推荐 15 个 jQuery 选择框插件
  10. opencv2学习:计算协方差矩阵
  11. js监听键盘回车
  12. SQL多条件查询
  13. 《锋利的Jquery第二版》读书笔记 第一章
  14. uoj164. 【清华集训2015】V 统计
  15. Menu之选项菜单
  16. hdu1824(two-sat)
  17. 如何让linux时间与internet时间同步(centos)
  18. 坑人的toLocaleDateString和简单地跳坑方式
  19. [十二]JavaIO之BufferedInputStream BufferedOutputStream
  20. 四边形不等式优化DP

热门文章

  1. Hibernate逍遥游记-第12章 映射值类型集合-002映射Bag(&lt;idbag&gt;&lt;collection-id&gt;)
  2. Arraysort
  3. mysql shell
  4. 10个用于Web开发的最好 Python 框架
  5. Androidz之Activity概要学习
  6. 进程控制的一些api
  7. 怎样衡量一个组员在团队中的Performance
  8. TYVJ 1066 合并果子【优先队列】
  9. qq互联(connect.qq.com)取用户信息的方法
  10. LeetCode Letter Combinations of a Phone Number 电话号码组合