我正在尝试从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构建的并且它无法使用,所以我试图从头开始构建它,但如果某人有更快的选择,我会非常乐意尝试它!
答案 0 :(得分:2)
好的,我终于明白了。 我用macport重新安装netcdf-fortran,然后突然出现了.mod文件,然后我遇到了问题,然而,当运行gfortran时,它会告诉我netcdf.mod是用不同版本的fortran编译的。使用。 (Macports使用4.8),所以从macports获得了gcc48,并且现在正在使用gfortran-mp-4.8进行编译,它可以正常工作。
仍然不知道如何从头开始构建所有这些东西,但它现在起作用至少!!!
答案 1 :(得分:1)
通常,当存在无法满足的下游依赖项时,我会看到这一点。由configure
创建的测试程序正在查找libhdf5
,但编译仍然失败,因为它无法找到类似libz
或libszip
的内容,具体取决于您的libhdf5的编译方式。< / p>
如果您检查config.log
文件并查找错误,它可能会告诉您某些未解决的符号&#39;。这将给出缺少哪个库的线索。如果它链接到静态构建的libhdf5,您可能需要使用LDFLAGS
添加相应的库。
如果您发布config.log
文件的相关部分,我们可以帮助理清究竟出现了什么问题。
答案 2 :(得分: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 文件中设置环境变量 CPPFLAGS
和 LDFLAGS
(在前两种方式之前)。