安装netCDF4时出现“找不到hdf5库”的错误提示。

4

我正在尝试在MacOSX上从源代码构建NetCDF4。当我运行./configure时,我收到以下错误:

checking for library containing H5Fflush... no
configure: error: Can't find or link to the hdf5 library. Use --disable-netcdf-4, or     see config.log for errors.

我之前已经安装了hdf5,并设置了以下环境变量:

LDFLAGS=-L/opt/local/lib
CPPFLAGS=-I/opt/local/include

在 /opt/local/lib 目录下,我有以下文件:

libhdf5.8.dylib             
libhdf5.a               
libhdf5.dylib               
libhdf5.settings            
libhdf5_cpp.8.dylib         
libhdf5_cpp.a               
libhdf5_cpp.dylib           
libhdf5_hl.8.dylib          
libhdf5_hl.a                
libhdf5_hl.dylib            
libhdf5_hl_cpp.8.dylib          
libhdf5_hl_cpp.a            
libhdf5_hl_cpp.dylib

我在 /opt/local/include 目录下有以下内容:

hdf5.h      hdf5_hl.h

为什么配置脚本找不到hdf5库?如果需要,我很乐意提供更多信息!
编辑: 我的最终目标是安装netcdf4作为Fortran模块使用。我已经尝试通过MacPorts安装所有内容,看起来似乎可以工作,但当我尝试使用它时,编译器告诉我没有netcdf.mod文件,而且确实无处可找到。结果只需输入:
sudo port install netcdf-fortran

仅安装库文件,但不创建.mod文件,我想这是必需的。所以我发现其他人也有同样的问题,给出的建议是使用gcc44进行安装,它确实创建了.mod文件,但然后我的编译器告诉我.mod文件是使用不同版本的gfortran构建的,不能使用,所以我正在尝试从头开始构建,但如果有更快的选项,我很乐意尝试!

4个回答

2

好的,我终于搞清楚了。 我使用macports重新安装了netcdf-fortran,然后.mod文件突然出现了,但是运行gfortran时会告诉我,netcdf.mod是使用与我使用的不同版本的fortran编译的(Macports使用4.8),所以我从macports获取了gcc48并且现在使用gfortran-mp-4.8进行编译,它可以工作了。

仍然不知道如何从头开始构建所有这些东西,但至少现在它可以工作了!


1
通常情况下,当存在无法满足的下游依赖关系时,我会看到这种情况。由configure创建的测试程序正在查找libhdf5,但编译仍然失败,因为无法找到像libzlibszip这样的内容,具体取决于您的libhdf5是如何编译的。
如果您检查config.log文件并查找错误,它可能会告诉您类似于“未解析的符号”的内容。这将提示缺少哪个库。如果它连接到静态构建的libhdf5,则可能需要使用LDFLAGS添加适当的库。
如果您发布config.log文件的相关部分,我们可以帮助梳理出到底出了什么问题。

这是我进行hdf5安装时的config.log。这个是netcdf安装时的config.log,但是安装失败了。 - meteosteph
在我的原始问题上添加了一点内容,也许帮助我解决问题更容易... - meteosteph

0
有时候在配置参数中它不起作用。
 ./configure --enable-shared --enable-fortran --enable-netcdf-4 
 CPPFLAGS=-I$home/apps2/include LDFALGS=-L$home/apps2/lib --prefix=$home/apps2

当在打开的 SHELL 中导出 CPPFLAGS=-I$home/apps2/include 时,可能会出现问题。 也许你可以在 .bashrc 文件中设置环境变量 CPPFLAGSLDFLAGS(优先于前两种方法)。


0
我遇到了同样的问题(找不到HDF5库),将所有参数都传递给配置命令,并且放在同一行上似乎起作用了。
CPPFLAGS="-I/my/HDF5/include" CC=mpicc LDFLAGS=-L/my/HDF5/lib LIBS=-ldl ./configure [...]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接