[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netCDF #AWC-509858]: H5Fflush not found



Hi Gabe,

> I'm trying to get some parallel IO support through netCDF but the
> installation is killing me. I am running Ubuntu 13.04 and couldn't find a
> package online that supports parallel netCDF (there is libhdf5-mpich2-dev
> but nothing like that for netCDF).
> 
> So, I tried to build it myself. First I tried to use the HDF5 package and
> just build netCDF but it could find the HDF5 libraries. So I removed the
> package and built HDF5 (and zlib) but the netCDF configure script still
> can't find the hdf5 library. Here is the command I used:

Note that HDF5 libraries have to be built to support parallel I/O in order for 
parallel I/O to be enabled for netCDF-4.  This is typically accomplished by 
configuring with CC=mpicc, where for me mpicc is a wrapper around gcc:

  http://www.unidata.ucar.edu/software/netcdf/docs/build_parallel.html

As an example, here's what I just used for hdf5-1.8.11:

   $ H5DIR=/machine/russ/installs/hdf5-1811-par
   $ CC=mpicc ./configure --prefix=${H5DIR} && make check install

The resulting installs/lib directory has the libraries as well as a
libhdf5.settings file that lists features of the library and contains this line 
when 
parallel I/O is enabled:

                  Parallel HDF5: mpicc

Then I built netcdf-4.3.0 thusly, (which only found H5Fflush when I included the
LIBS=-ldl setting, for some reason I don't understand):

   $ LIBS=-ldl CC=mpicc CPPFLAGS=-I${H5DIR}/include LDFLAGS=-L${H5DIR}/lib 
./configure --enable-parallel-tests --prefix=/machine/russ/installs/nc430-par 
&& make check install

I'm adding a mention of the necessity for "LIBS=-ldl" to the document above, but
I would really like to know why it seems to be necessary and is not 
automatically
supplied by the configure script ...

The above may work for you, but still didn't complete successfully for me, 
instead
resulting in a linking error having to do with trying to use shared libraries:

  /usr/bin/ld: /machine/russ/installs/hdf5-1811-par/lib/libhdf5_hl.a(H5DS.o): 
relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a 
shared object; recompile with -fPIC
  /machine/russ/installs/hdf5-1811-par/lib/libhdf5_hl.a: could not read 
symbols: Bad value

It turns out the HDF5 configure disables shared libraries when enabling 
parallel I/O,
so I finally had to add "--disable-shared" as a configure option to get a 
successful
parallel I/O build:

  $ LIBS=-ldl CC=mpicc CPPFLAGS=-I${H5DIR}/include LDFLAGS=-L${H5DIR}/lib 
./configure --disable-shared --enable-parallel-tests 
--prefix=/machine/russ/installs/nc430-par && make check install

By the way, if you get that working, you should also be able to use 
parallel-I/O 
on netCDF classic format files if you also install the pnetcdf library from 
Argonne/Northwestern in a place where configure can find it and add 
"--enable-pnetcdf" to the above configure command.

Also, we're currently experiencing some sort of test server failure for the
remote tests, so if you're going to try this right away, you may want to add
--disable-dap-remote-tests to the configure options.

--Russ

> $ CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib
> LD_LIBRARY_PATH=/usr/local/lib CXX=null FC=null ./configure
> --prefix=/usr/local --enable-netcdf-4 --enable-parallel-tests
> 
> and here is the configure script response:
> 
> 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've attached the config.log. Any help would be appreciated.
> 
> Thanks,
> 
> Gabriel D Weymouth
> SMMI Lecturer
> The University of Southampton
> Highfield Campus, Building 28, Room 2021
> Southampton, SO17 1BJ, UK
> 
> 
> Hello,
> 
> I'm trying to get some parallel IO support through netCDF but the
> installation is killing me. I am running Ubuntu 13.04 and couldn't find a
> package online that supports parallel netCDF (there is libhdf5-mpich2-dev
> but nothing like that for netCDF).
> 
> So, I tried to build it myself. First I tried to use the HDF5 package and
> just build netCDF but it could find the HDF5 libraries. So I removed the
> package and built HDF5 (and zlib) but the netCDF configure script still
> can't find the hdf5 library. Here is the command I used:
> 
> $ CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib
> LD_LIBRARY_PATH=/usr/local/lib CXX=null FC=null ./configure
> --prefix=/usr/local --enable-netcdf-4 --enable-parallel-tests
> 
> and here is the configure script response:
> 
> 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've attached the config.log. Any help would be appreciated.
> 
> Thanks,
> 
> Gabriel D Weymouth
> SMMI Lecturer
> The University of Southampton
> Highfield Campus, Building 28, Room 2021
> Southampton, SO17 1BJ, UK
> 
> 
Russ Rew                                         UCAR Unidata Program
address@hidden                      http://www.unidata.ucar.edu



Ticket Details
===================
Ticket ID: AWC-509858
Department: Support netCDF
Priority: Normal
Status: Closed