无法在 (1) 打开模块文件 'hdf5.mod' 进行读取:没有这样的文件或目录

Cannot open module file 'hdf5.mod' for reading at (1): No such file or directory

我正在尝试在 WSL2 (Ubuntu20.04) 上安装 DAMASKhttps://damask.mpie.de/bin/view/Installation/SpectralSolver,但是,当我想制作光谱求解器时。

(base) admin@DESKTOP-FQ1FRPR:~/damask-2.0.3$ make spectral 

遇到如下错误,

Building Spectral Solver

Fortran Compiler Flags:
 -fopenmp -std=f2008ts -pedantic-errors -O2  -xf95-cpp-input -ffree-line-length-132 -
 fimplicit-none -fmodule-private -Wall -Wextra -Wcharacter-truncation -Wunderflow - 
 Wsuggest-attribute=pure -Wsuggest-attribute=noreturn -Wconversion-extra -Wimplicit- 
 procedure -Wno-unused-parameter -ffpe-summary=all  -fdefault-real-8 -fdefault-double-8   
 -I/home/fengyx/petsc/include -I/home/fengyx/petsc/arch-linux-c-opt/include

C Compiler Flags:
-O3 -DNDEBUG

Fortran Linker Command:
 /home/admin/petsc/arch-linux-c-opt/bin/mpif90 -Wall -ffree-line-length-0 -Wno-unused- 
 dummy-argument -g -O -fopenmp   -O2  -Wl,-undefined,dynamic_lookup <OBJECTS> -o 
 <TARGET> <LINK_LIBRARIES>  -L/home/admin/petsc/arch-linux-c-opt/lib -Wl,- 
 rpath,/home/admin/petsc/arch-linux-c-opt/lib -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/9 
 -L/usr/lib/gcc/x86_64-linux-gnu/9 -lpetsc -lHYPRE -lcmumps -ldmumps -lsmumps -lzmumps - 
 lmumps_common -lpord -lpthread -lscalapack -lspqr -lumfpack -lklu -lcholmod -lbtf - 
 lccolamd -lcolamd -lcamd -lamd -lsuitesparseconfig -lsuperlu -lsuperlu_dist -lml - 
 lfftw3_mpi -lfftw3 -lflapack -lfblas -lhdf5_hl -lhdf5 -lchaco -lparmetis -lmetis - 
 ltriangle -lm -lz -lstdc++ -ldl -lmpifort -lmpi -lgfortran -lgcc_s -lquadmath
-- Configuring done
-- Generating done
-- Build files have been written to: /home/admin/damask-2.0.3/build/spectral
[  1%] Built target PREC
[  3%] Built target C_ROUTINES
[  7%] Building Fortran object src/CMakeFiles/QUIT.dir/quit.f90.o
[  7%] Built target SYSTEM_ROUTINES
/home/admin/damask-2.0.3/src/quit.f90:29:5:

   29 |  use hdf5
      |     1
Fatal Error: Cannot open module file ‘hdf5.mod’ for reading at (1): No such file or directory
compilation terminated.
make[3]: *** [src/CMakeFiles/QUIT.dir/build.make:63: src/CMakeFiles/QUIT.dir/quit.f90.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:709: src/CMakeFiles/QUIT.dir/all] Error 2
make[1]: *** [Makefile:130: all] Error 2
make: *** [Makefile:10: spectral] Error 2

有人可以提供一些建议吗?我将感激不尽。

您应该使用如下命令安装 libhdf5:

apt-get install libhdf5-serial-dev

如果您从源代码手动构建该库,则在编译项目时需要告诉编译器在哪里可以找到 HDF5 模块。通常,它们驻留在 include 文件夹中。找到模块文件并将 -I/path/to/modules 添加到编译器选项。

我在尝试安装 DAMASK 时遇到了同样的问题。您需要使用正确的编译器从其页面上的源代码手动安装 hdf5,如 damask 说明页面和 hdf5 随附的“安装”文本文件中所述,以及正确的选项。然后使用配置中指向的 hdf5 文件夹而不是 --download-hdf5 重新配置和重新制作 PETSC。那么至少这个问题会消失。 (我现在正在和其他人斗争)。