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

时间:2015-06-22 17:40:36

标签: fortran codeblocks

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

问题在于:

  1. 我在codeblocks的项目中打开'build option'。然后我直接跳转到链接器设置。并添加所需的.a库文件。
  2. 然后我点击'重建工作区'。
  3. 此处出现错误消息:

    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的东西。所以这意味着codeblocks中的链接器选项不起作用。为什么呢?

2 个答案:

答案 0 :(得分:1)

在编译时需要依赖hdf5.mod,而不是链接时间,这就是为什么你没有成功通过链接器选项修复它。模块文件在某种程度上在概念上类似于C包含文件(虽然在实现上非常不同而且不可移植)。要允许编译器找到它们,您可以通过-I选项传递搜索路径。

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

enter image description here

答案 1 :(得分:1)

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

在Ubuntu上:

sudo apt-get install libhdf5-serial-dev

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

在MacOS上:

你可能需要Fortran的部分/全部标志:

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