先贴一下wrf中文手册上编译netcdf3.6.2的方法
安装NetCDF
安装运行WRF模式之前,必须要安装NetCDF。可以通过下面的网址下载。
http://www.unidata.ucar.edu/software/netcdf/index.html
1、使用gunzip和tar命令对文件进行解压,展开。
tar –xvf netcdf-3.6.1.tar
cd netcdf-3.6.1/src
2、 ./configure --prefix=/home/user/you/(安装在指定的目录下)
3、检查/netcdf-3.6.1/src 目录下的 macros.make 文件。
vi macros.make
(在此处,使用vi命令。UNIX的初学者注意:用vi命令可以编辑文件,不保存退出时按顺序按下
: q !
键,即可退出;若要保存后退出可按
: w q 共四键)
注意到INSTALL行。如果此行是INSTALL = /usr/bin/install –c 即可;如果不是,要按此修正。
4、 make check
5、make install (UNIX下安装软件的一般步骤: 1../configure 2. make 3. make
install )
此时,要确认在prefix的地方(这回是/home/user/you/)会有bin, lib,
include和man目录生成。
6、设定NetCDF的环境变量:(个人建议直接写到bashrc文件里面,方便)
NETCDF=/home/user/you;export NETCDF
2007年3月初,推出了NetCDF-3.6.2版本。使用最新版或者前一版都可以安装运行WRF Model
WRF中文手册这个地方写的太简单,也有可能作者在编译的时候没有遇到什么问题。
在此我在补充一下:上述流程都是正确,关键在于编译器的选择上,比如一般的系统自带的F90,F77,c编译器的cc,gcc,我们常用的pgi的pgf90、pgcc,intel
的ifort,icc,ibm的xlf90,因为你编译wrf时候要用到netcdf的库libnetcdf.a,这个库文件的所用的编译器要和你w编译rf所用的编译器相同,比如你编译wrf要用到ifort和icc,那么编译netcdf你就必须要用ifort和icc,这就是编译器一致的问题。
所以我们在编译netcdf的时候要指定fortran、c、c++的编译器(一般系统上都有好几种fortran和c的编译器),然后在修改相应的编译参数(netcdf给的编译参数不大正确),以用intel的编译器为例说明下:
在configure之前指定fortran和c的编译器(括号内可省略),
export CC=(/opt/intel/cc/10.1.013/bin/)icc
export CXX==(/opt/intel/fce/10.1.018/bin/)cpc
export F77=(/opt/intel/fce/10.1.018/bin/)ifort
export F77=(/opt/intel/fce/10.1.018/bin/)ifort
然后在./configure --prefix=/home/user/you
然后在修改makefile,注意netcdf4.0以上版本并没有macros.make这个文件,直接修改makefile即可,主要是修改编译参数,改动部分如下;(注意不同cpu有不同的编译参数,下面是针对intel的酷睿)
CC = icc
CFLAGS = -O3 -xT -ip -no-prec-div -static
CPP = icc -E
CPPFLAGS =
CXX = icpc
CXXCPP = icpc -E
CXXFLAGS = -O3 -xT -ip -no-prec-div -static
F77 = ifort
FC = ifort
FCFLAGS = -O3 -xT -ipo -no-prec-div -static
FCFLAGS_f90 =
FFLAGS = -O3 -xT -ipo -no-prec-div -static
LD = ifort
LDFLAGS = -O3 -xT -no-prec-div -static