- 积分
- 96
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-2-27
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
组内有一台小型机,因为常年没有人维护,各种环境乱的不行,除了拿来用Matlab,计算全跑到天河上去。毕竟一百多个线程,一直闲置着实在可惜,因此这一次就打算重新编译一下最新版本的Netcdf和pnetcdf,过程中也是碰到了各种各样的问题,能够查到的资料也相对较少,同时多少都存在一些问题,因此把我的整个过程记录下来,如果大家也有这方面的需要能够提供一点帮助。
平台:CentOS 6.9
下载地址:ftp://ftp.unidata.ucar.edu/pub/netcdf/
安装顺序:
- zlib 1.2.8
- szip 2.1
- hdf5 1.8.13
- pnetcdf 1.12.1
- netcdf-c 4.7.3
- netcdf-fortran 4.5.2
因为netcdf 4.2版本以上c和fortran库分开了,所以需要分别安装。
首先确定好你的系统编译器环境,
export CC=mpiicc
export CXX=mpiicpc
export FC=mpiifort
在这里我使用的是intel compiler + impi,如果使用openmpi或mpich,要记得把mpiicc改为mpicc,mpiifort改为mpifort,配置完成后通过which mpiicc和mpiicc --version 来确认一下编译器环境配置的是否正确。
我的顶层目录 :/usr/local/netcdf-intel-mpi/
1) zlib安装
配置安装信息:./configure --prefix=/usr/local/netcdf-intel-mpi/zlib
编译:make -j8
检查:make check
安装:make install
2)szip安装
配置安装信息:./configure --prefix=/usr/local/netcdf-intel-mpi/szip
编译:make -j8
检查:make check
安装:make install
3)hdf5安装
配置安装信息:CPPFLAGS="-I/opt/impi/5.0.1.035/intel64/include" LDFLAGS="-L/opt/impi/5.0.1.035/intel64/lib" ./configure --with-zlib=/usr/local/netcdf-intel-mpi/zlib/ --with-szlib=/usr/local/netcdf-intel-mpi/szip/ --prefix=/usr/local/netcdf-intel-mpi/hdf5 --enable-fortran --enable-parallel --enable-shared --disable-static
编译:make -j8
检查:make check
安装:make install
注意:
1. 前两个在安装过程中基本不会出错,因此是否make check可以自我选择,但是从这里开始建议不要省略这个步骤;
2. 在这里我遇到了即使使用了--enable-shared进行配置,在configuration summary里仍然显示我选择了静态库安装的方式,后来与Unidata netcdf support 沟通后,他们建议可以进一步加上--disable-static选项,尽管这一项在configure中并不能查到,在添加这一选项后,无法启动动态库的这一问题解决;
4)parallel-netcdf安装
配置安装信息:CPPFLAGS="-I/usr/local/netcdf-intel-mpi/hdf5/include -I/usr/local/netcdf-intel-mpi/szip/include -I/usr/local/netcdf-intel-mpi/zlib/include -I/opt/impi/5.0.1.035/intel64/include" LDFLAGS="-L/usr/local/netcdf-intel-mpi/hdf5/lib -lhdf5_hl -lhdf5 -lz -lm -L/usr/local/netcdf-intel-mpi/szip/lib -L/usr/local/netcdf-intel-mpi/zlib/lib -L/opt/impi/5.0.1.035/intel64/lib" ./configure --prefix=/usr/local/netcdf-intel-mpi/pnetcdf --with-mpi=/opt/impi/5.0.1.035/intel64 --enable-shared --enable-large-file-test --enable-null-byte-header-padding --enable-burst-buffering --enable-profiling --disable-static
编译:make -j8
检查:make check
安装:make install
注意:
1. 必须要加上--with-mpi选项;
2. 除上一选项和--enable-shared以外,其余选项可根据自身需求进行选择,如选择--enable-large-file-test 的话在make check中会需要较长的时间;
3. 按照Github上的安装指南,parallel-netcdf库同时也可以在安装完成netcdf后进行安装,使用--with-netcdf选项;
5) netcdf-c库安装
配置安装信息:CPPFLAGS="-I/usr/local/netcdf-intel-mpi/hdf5/include -I/usr/local/netcdf-intel-mpi/pnetcdf/include" LDFLAGS="-L/usr/local/netcdf-intel-mpi/hdf5/lib -lhdf5_hl -lhdf5 -lz -lm -L/usr/local/netcdf-intel-mpi/pnetcdf/lib -lpnetcdf" ./configure --prefix=/usr/local/netcdf-intel-mpi/netcdf --enable-shared --enable-pnetcdf --enable-parallel-tests --disable-static --disable-dap
编译:make -j8
检查:make check
安装:make install
注意:
1. 如果没有输入--disable-dap的话,需要预先安装curl,这里因为没有这一需求,所以并没有安装;
2. 如果有跨平台编译需求的话,需要加上--host ,--build可以不写
3. 把netcdf-c在pnetcdf后安装,需要跟上--enable-pnetcdf
4. 务必make check,说多了都是泪
6)netcdf-fortran安装
配置安装信息:CPPFLAGS="-I/usr/local/netcdf-intel-mpi/hdf5/include -I/usr/local/netcdf-intel-mpi/pnetcdf/include -I/usr/local/netcdf-intel-mpi/netcdf/include" LDFLAGS="-L/usr/local/netcdf-intel-mpi/hdf5/lib -lhdf5_hl -lhdf5 -lz -lm -L/usr/local/netcdf-intel-mpi/pnetcdf/lib -lpnetcdf -L/usr/local/netcdf-intel-mpi/netcdf/lib" ./configure --prefix=/usr/local/netcdf-intel-mpi/netcdf --enable-shared --enable-parallel-tests --disable-static
编译:make -j8
检查:make check
安装:make install
注意:
1. 在这里不需要跟--enable-pnetcdf和--disable-dap选项
2. 如果即使已经LDFLAGS里指定了动态库路径,在configure中还会报错,那么需要进一步通过export来声明(cshell下env)
3. 如果你的GNU是使用了SCL的虚拟环境的,那么务必把它禁用掉,按照我的自身经验,SCL下的GNU不知道为什么不支持shared library。只要启动就会报各种奇怪的错误。
4. 如果遇到configure:error:cannot run C compiled programs. 尝试通过清理路径和库路径解决,如 export PATH= ; export LD_LIBRARY_PATH= ;
5. 出现了无法解释的错误,可以尝试查看libtool找出不合理的地方;
6. 如果在配置了LDFLAGS后,依旧出现了configure: error: Could not link to netcdf C library. Please set LDFLAGS,尝试看一下是否前面有模块选择了静态库方式,那样你需要进一步定义LD_LIBRARY_PATH和LIBS;
希望大家都可以安装成功!
参考链接:
1. 4.2版本后netcdf-fortran安装
https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html
2. Parallel-netcdf安装
https://github.com/Parallel-NetCDF/PnetCDF/blob/master/INSTALL
3. 安装netcdf fortran库出错
http://bbs.06climate.com/forum.php?mod=viewthread&tid=40952
4. Configure error cannot compute size of (off_t)
https://www.unidata.ucar.edu/support/help/MailArchives/netcdf/msg13820.html
5. netcdf-fortran f90_tst_parallel_fill.f90 error 5028
https://www.unidata.ucar.edu/mailing_lists/archives/netcdfgroup/2013/msg00415.html
6. Makefile编译选项CC与CXX/CPPFLAGS、CFLAGS与CXXFLAGS/LDFLAGS
https://blog.csdn.net/hjwang1/article/details/44497489
7. MPI编译环境的使用
https://scc.ustc.edu.cn/zlsc/pxjz/201408/W020140804352832344867.pdf
8. configure: error: cannot run C compiled programs
https://github.com/avast/retdec/issues/425
9. Libtool claims it does not support shared libraries during cross compilation
https://stackoverflow.com/questions/14368627/libtool-claims-it-does-not-support-shared-libraries-during-cross-compilation
10. linux下动态库的生成和链接
https://blog.csdn.net/xiaqunfeng123/article/details/51301731
|
|