【问题标题】:Error in opening the compiled module of HDF5打开HDF5编译模块出​​错
【发布时间】:2017-03-09 23:11:08
【问题描述】:

我有一个 Fortran 程序,其中一个文件以行 use HDF5 开头。该程序之前已在特定集群上编译和运行。现在,我正在尝试在另一个集群中编译程序,该集群已经在特定位置安装了hdf5

我认为问题在于编译器无法理解hdf5 安装目录的位置。我也尝试通过使用LD_LIBRARY_PATH 导出来指定hdf5 位置。它仍然不起作用。有人可以帮我弄清楚我做错了什么吗?

编译器标志还包括-lhdf5_fortran-lhdf5

更新:编译的错误列表很长。但是,它的开头是这样的:

lbe_io_hdf5.F90(7): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [HDF5]
  use HDF5
------^
lbe_io_hdf5.F90(82): error #6683: A kind type parameter must be a compile-time constant.   [HID_T]
  integer(hid_t) :: file_id      ! File identifier

【问题讨论】:

  • 您必须首先告诉我们您在做什么。否则我们真的不知道你做错了什么......
  • 从不在疑问句中使用“it doesn't work”。发生什么了?错误?错误的结果?它会打印什么东西吗?具体一点。
  • 我添加了编译日志。
  • B请注意,链接库是不够的,您必须设置包含路径,以便编译器知道在哪里搜索.mod 文件。您可以使用 -I the_path 之类的东西(至少在 gfortran 中)。
  • 我还将hdf5 的安装位置与-I /path/to/hdf5/lib 一起包含在编译器标志中。如您所见,问题始于use HDF5 本身,代码不知道hdf5 的位置。

标签: fortran hdf5


【解决方案1】:

HDF5 带有用于 Fortran 的编译器包装器 h5fc。对于单个程序文件:

h5fc -o my_program my_program.f90

单独编译和链接:

h5fc -c file1.f90
h5fc -c my_program.f90
h5fc -o my_program file1.o my_program.o

如果你想直接调用编译器,检查下给出的标志

h5fc -show

如果没有h5fc 命令,则表示您没有安装启用 Fortran 的 HDF5。

【讨论】:

    【解决方案2】:

    看来我一直试图将hdf5 标头定位在错误的位置。使用locate hdf5.h 给了我头文件的位置,包括使用-I 的目录解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-06
      • 2018-04-20
      • 1970-01-01
      • 2014-11-02
      • 2021-11-09
      • 2011-10-19
      • 1970-01-01
      • 2017-02-23
      相关资源
      最近更新 更多