LICOM编译可能遇到的问题

1. mpi和netcdf的路径检索

可以通过mpirun和ncdump确定大概位置
在根目录下的opt,usr,public这三个可能性较大的目录下查找,mpi和netcdf一般对应在intel、netcdf文件夹。注意:netcdf比较难找,需要仔细一些麻烦一些。

如我的netcdf在/opt/netcdf,目录下有:


检查bin和lib目录,尤其是lib目录下大致涵盖libnetcdf等
/opt/netcdf/bin

/opt/netcdf/lib

如我的mpi在/public/mpi/openmpi/1.8.5/intel

检查目录,如:
/public/mpi/openmpi/1.8.5/intel/bin

&注意:不同服务器下,可能由于版本和安装过程不同,导致目录下的文件内容不一定完全相同。如mpi路径下,有的可能是mpiifort,有的是mpifort,但是一定要保证mpirun的存在。
&注意:可以将找到的mpi和netcdf,增加环境变量~/.bashrc (后面编译过程中可能会出现一个错误和环境变量设置有关)

2. 在Makefile里面可以修改编译器、库的路径(INCLDIR,NLIB,FC)

NCLDIR  = -I. -I/usr/include -I/usr/local/include -I /public/mpi/openmpi/1.8.5/intel/include -I/opt/netcdf/include

NLIB =   -L/public/mpi/openmpi/1.8.5/intel/lib -L/opt/netcdf/lib -lnetcdf

FC = /public/mpi/openmpi/1.8.5/intel/bin/mpifort \$(FFLAGS)

可能遇到的错误:

>> 1. 读取 NETCDF, undefined reference to

错误提示如:
Id: warning: libsz.so.2,needed by /opt/netcdf/lib/libnetcdf.so, not found (try using -rpath or -roath-link')
/opt/netcdf/lib/libnetcdf.so: undefined reference to 'H5T STD U16LE g'

解决方法: (参考自https://blog.sciencenet.cn/blog-714229-620905.html)
在Makefile NLIB尝试将-L/opt/netcdf/lib -lnetcdf替换成-L/opt/netcdf/lib -lnetcdf -lnetcdff或者-L/opt/nc4/lib -Inetcdf -Inetcdff -Ihdf5_hl -Ihdf5 -lsz,具体如何替换可以依次尝试或根据错误提示,或者直接将netcdf/lib下的内容添加进去。比如netcdf/lib下有netcdf,netcdff,hdf5_hl,hdf5和lsz,选用后者替换方案可以编译成功。
原因:在安装netcdf的时候没有将hdf5等和netcdf关联起来

>> 2. netcdf找错了

错误提示如:diag_mod.F90:209: 错误:netcdf.inc:没有那个文件或目录
解决方法:重新找包含bin,lib,include的netcdf目录,并检查netcdf完整与否

3. 运行

编译成功后,在新生成的文件夹中包含exe和src,检查exe的完整性:

可以在run文档中找到mpirun的具体运行命令。
可能遇到的错误:

>> 1. 没找到mpirun**

如遇到-bash: mpirun: command not found

解决方法: 设置环境变量,在~/.bashrc中添加mpi的路径

export PATH=/public/mpi/openmpi/1.8.5/intel/bin:$PATH

>> 2. 没找到lnetcdf

如遇到./licom2: error while loading shared libraries: libnetcdf.so.7: cannot open shared object file: No such file or directory

解决方法: 设置环境变量,添加netcdf的路径(参考自:https://blog.csdn.net/wallwind/article/details/7580659)

export PATH=/opt/netcdf/bin:$PATH

export LD_LIBRARY_PATH=/opt/netcdf/lib:$LD_LIBRARY_PATH

source ~/.bashrc后重新运行即可

posted @ 2022-03-14 10:49  dan-chen  阅读(406)  评论(0编辑  收藏  举报