meteosteph
meteosteph

Reputation: 143

'Can't find hdf5 library' while installing netCDF4

I am trying to build NetCDF4 from source on MacOSX. When I run ./configure I get the error:

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.

I installed hdf5 before, and set the environment variables as:

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

In /opt/local/lib I have these files:

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

And in /opt/local/include I have:

hdf5.h      hdf5_hl.h

Why doesn't the configure script find the hdf5 library? I am happy to provide more information if needed!

EDIT: My ultimate goal is to install netcdf4 for use as a Fortran module. I have tried installing everything through MacPorts, and it seemed to work, but when I tried to use it, the compiler told me that there was no netcdf.mod file, and sure enough there wasn't one to be found anywhere. It turns out that just typing:

sudo port install netcdf-fortran

only installs the library files, but doesn't create a .mod file, which I guess is needed. So I found out that other people had the same problem, and the advice given was to install it with gcc44, which did create a .mod file, but then my compiler told me that the .mod file was built with a different version of gfortran and it couldn't be used, so that's why I am trying to build it from scratch, but if someone has a faster option, I would be more than happy to try it!

Upvotes: 4

Views: 14648

Answers (4)

water
water

Reputation: 21

I had the same problem (not finding the HDF5 libraries), and passing all arguments to configure on the same line as follows seemed to work:

CPPFLAGS="-I/my/HDF5/include" CC=mpicc LDFLAGS=-L/my/HDF5/lib LIBS=-ldl ./configure [...]

Upvotes: 1

michealjjyy
michealjjyy

Reputation: 1

Sometimes it doesn't work in the configure parameters like

 ./configure --enable-shared --enable-fortran --enable-netcdf-4 
 CPPFLAGS=-I$home/apps2/include LDFALGS=-L$home/apps2/lib --prefix=$home/apps2

or doesn't work when export CPPFLAGS=-I$home/apps2/include in the open SHELL. Maybe you can set the env vars CPPFLAGS and LDFLAGS in the .bashrc file (prior to the first two ways).

Upvotes: 0

meteosteph
meteosteph

Reputation: 143

Ok, I finally figured it out. I reinstalled netcdf-fortran with macports, then the .mod file suddenly appeared, I then had the problem, however, that when running gfortran, it would tell me that netcdf.mod was compiled with a different version of fortran than the one I am using. (Macports uses 4.8), so got gcc48 from macports and am using gfortran-mp-4.8 to compile now and it works.

Still don't know how to build all these things from scratch, but it works now at least!!!

Upvotes: 2

Ward F.
Ward F.

Reputation: 341

Typically, I see this when there is a downstream dependency that cannot be fulfilled. The test program created by configure is finding libhdf5, but compilation is still failing because it cannot find something like libz or libszip, depending on how your libhdf5 was compiled.

If you check your config.log file and look for the error, it will probably tell you something along the lines of 'unresolved symbol'. This will give a clue as to which library is missing. If it is linking against the statically-built libhdf5, you may need to add the appropriate library usingLDFLAGS.

If you post the relevant portion of your config.log file, we may be able to help sort out what exactly is going wrong.

Upvotes: 1

Related Questions