如何编译需要 HDF5 库的程序(使用 Codeblocks)?

How to compile a program that need HDF5 library (using Codeblocks)?

我有 11 个文件都需要 HDF5 库。通常我只是使用另一种方法来编译和构建该程序。现在我改变主意了,我想自己用 Codeblocks 来做。

这是问题所在:

  1. 我在代码块中打开项目中的 'build option'。然后我直接跳转到链接器设置。并添加需要的.a库文件。
  2. 然后我直接点击'rebuild workspace'。

此处出现错误信息:

gfortran -Jobj/Debug/ -Wall  -g  -O3    -c "/home/shawn/Documents/datafile_oldubuntu/Academics/Data_analysis_code/Helmholtz decomposition+rotcombudget/code_budget/budget_helmholtz_comrot_ver2.0_symmertic/global.f90" -o obj/Debug/global.o

/home/shawn/Documents/datafile_oldubuntu/Academics/Data_analysis_code/Helmholtz decomposition+rotcombudget/code_budget/budget_helmholtz_comrot_ver2.0_symmertic/global.f90:3.4:

USE HDF5
    1

Fatal Error: Can't open module file 'hdf5.mod' for reading at (1): No such file or directory
Process terminated with status 1 (0 minute(s), 1 second(s))
1 error(s), 0 warning(s) (0 minute(s), 1 second(s))

如你所见,我的编译文件夹本地没有hdf5.mod这个东西。所以这意味着代码块中的链接器选项不起作用。为什么?

编译时需要依赖项 hdf5.mod,而不是 link 时,这就是为什么您无法通过 linker 选项成功修复它的原因。模块文件在概念上有点像 C 包含文件(尽管在实现上有很大不同并且不可移植)。为了让编译器找到它们,您可以通过 -I 选项传递搜索路径。

在代码块中,您应该在 linker 选项旁边找到一个 search directories 选项卡(在项目构建选项中)。在搜索目录选项卡中,您需要 select 编译器选项卡,然后将路径添加到 hdf5 模块文件。

还要确保您已经安装了 serial hdf5 库包。这可能会在将来帮助其他人。

在 Ubuntu:

sudo apt-get install libhdf5-serial-dev

我收到了与您相同的错误,因为我只有 MPI 版本(libhdf5-openmpi-devlibhdf5-mpich-dev

在 MacOS 上:

您可能需要 some/all 个 Fortran 标志:

brew install homebrew/science/hdf5 --with-fortran --with-mpi --with-fortran2003