如何编译需要 HDF5 库的程序(使用 Codeblocks)?
How to compile a program that need HDF5 library (using Codeblocks)?
我有 11 个文件都需要 HDF5 库。通常我只是使用另一种方法来编译和构建该程序。现在我改变主意了,我想自己用 Codeblocks 来做。
这是问题所在:
- 我在代码块中打开项目中的 'build option'。然后我直接跳转到链接器设置。并添加需要的.a库文件。
- 然后我直接点击'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-dev
或 libhdf5-mpich-dev
)
在 MacOS 上:
您可能需要 some/all 个 Fortran 标志:
brew install homebrew/science/hdf5 --with-fortran --with-mpi --with-fortran2003
我有 11 个文件都需要 HDF5 库。通常我只是使用另一种方法来编译和构建该程序。现在我改变主意了,我想自己用 Codeblocks 来做。
这是问题所在:
- 我在代码块中打开项目中的 'build option'。然后我直接跳转到链接器设置。并添加需要的.a库文件。
- 然后我直接点击'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-dev
或 libhdf5-mpich-dev
)
在 MacOS 上:
您可能需要 some/all 个 Fortran 标志:
brew install homebrew/science/hdf5 --with-fortran --with-mpi --with-fortran2003