写在前面
最开始系统是Ubuntu 20.04,安装到grib_api时失败,看到这个帖子以为是系统问题,重装ubuntu18.04。但是到grib_api时出现同样问题,报错:
error: identifier "_LIB_VERSION_TYPE" is undefined _LIBIMF_EXT _LIB_VERSIONIMF_TYPE _LIBIMF_PUBVAR _LIB_VERSIONIMF
后来发现真实原因是:现用Intel parallel studio2017,与ubuntu不兼容,参考这里。
编译器安装intel_oen_API,Base Toolkit 和 HPC Toolkit,参考这里。
然后所有库包重装,
环境:
export CC=icc
export FC=ifort
export CXX=icpc
export CFLAGS='-O3 -fPIC -ip -no-prec-div'
export CPPFLAGS='-O3 -fPIC -ip -no-prec-div'
export FFLAGS='-O3 -fPIC -ip -no-prec-div'
export CXXFLAGS='-O3 -fPIC -ip -no-prec-div'
export CPP='icc -E'
export CXXCPP='icpc -E'
库包版本:
zlib-1.2.11 (ubuntu 20.04);zlib-1.2.8 (ubuntu 18.04)
szip-2.1.1
hdf5-1.8.18 (ubuntu 20.04);hdf5-1.10.6 (ubuntu 18.04)
udunits-2.2.26
curl-7.70.0
netcdf-4.6.0
netcdf-fortran-4.4.4
netcdf-cxx4-4.3.0
jasper-1.900.1
libpng-1.2.12 (后更新到libpng-1.6.37,否则编译WRF4.4报错)
grib_api-1.28.0
FLEXPART:
因为依赖库都是ifort编译的,所以flexpart必须也用ifort!!!!!!
makefile的修改:
F90 = /data/public/software/intel/oneapi/compiler/2022.1.0/linux/bin/intel64/ifort
MPIF90 = /data/public/software/intel/oneapi/mpi/2021.6.0/bin/mpiifort
上述路径可以用 which ifort 和 which mpiifort 找到。
INCPATH1 = /data/software/apps/grib_api-1.27.0/include
INCPATH2 = /data/software/apps/jasper-1.900.1/include
INCPATH3 = /data/public/software/include
LIBPATH1 = /data/software/apps/grib_api-1.27.0/lib
LIBPATH2 = /data/software/apps/jasper-1.900.1/lib
LIBPATH3 = /data/public/software/lib
inc和lib,能找到grib_api,jasper和netcdf就行。
其他修改的地方参照其他教程。
*****
如果编译器前后不一致,出现报错:
f951: Fatal Error: Reading module ‘grib_api’ at line 1 column 2: Unexpected EOF
compilation terminated.
makefile:262: recipe for target 'class_gribfile_mod.o' failed
make: *** [class_gribfile_mod.o] Error 1