如何解决有关使用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.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
我该如何解决这个问题?一些页面表明,这是由于调用c ++编译器时出现了'-ldl-标志,但我找不到适合于我的情况的方法。
解决方法
页面正确。您的HDF5库 libhdf5.a 使用函数dlclose
,该函数在库 libdl 中定义。要使用它,您只需在-ldl
命令行的末尾添加mpifort
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。