有关使用HDF5和mpi编译源代码的问题

问题描述

当我尝试通过“ make”编译源代码时,创建“ .o”文件的第一步运行良好,并且所有“ .o”文件都可以正常编译。但是,在编译可执行文件时:

mpifort -fopenmp -O3 -o MyEXE sth.o main.o -L/usr/local/share/fftw-3.3.8/lib -lfftw3_mpi -lfftw3 -lm -L/usr/local/share/mpich-3.2/lib -lmpi -lz -L/usr/local/share/hdf5-1.8.18/lib                                                                               -lhdf5_fortran -lhdf5hl_fortran -lhdf5_hl -lhdf5 -fPIC

出现以下错误

/usr/bin/ld: /usr/local/share/hdf5-1.8.18/lib/libhdf5.a(H5PL.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libdl@R_404[email protected]: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

我该如何解决这个问题?一些页面表明,这是由于调用c ++编译器时出现了'-ldl-标志,但我找不到适合于我的情况的方法

解决方法

页面正确。您的HDF5库 libhdf5.a 使用函数dlclose,该函数在库 libdl 中定义。要使用它,您只需在-ldl命令行的末尾添加mpifort