This is an old revision of the document!


Building NetCDF, HDF4 and HDF5 on Windows

There are binaries available, and they're probably fine, but the headers are not, because HDF4 / HDF5 install different headers depending on which compiler they were built with (which in itself is a bug). Luckily, building them from source is fairly easy.

TODO: Figure out the exact relationship between these three. Apparently, HDF4 wants NetCDF, and NetCDF wants HDF5…

First, get the latest source (currently 4.0.1) from http://www.unidata.ucar.edu/software/netcdf/ and extract it in a convenient place, then configure, build and install:

$ ./configure --prefix=/opt/netcdf --enable-shared --disable-f90 --disable-examples
$ make LDFLAGS=-no-undefined all install

Note the --enable-shared part; you can leave out --disable-f90 and --disable-examples if you want, but keep --enable-shared.

TODO: check configure options

First, get the latest source (currently 4.2r4) from http://www.hdfgroup.org/release4/obtain.html and extract it in a convenient place, then configure, build and install:

$ LDFLAGS="-no-undefined" ./configure --prefix=/opt/hdf --enable-shared --disable-fortran
$ make all install

TODO: check configure options

First, get the latest source (currently 1.8.3) from http://www.hdfgroup.org/HDF5/release/obtain5.html and extract it in a convenient place.

In HDF5 1.8.3, there are several issues we need to address before we can build the library.

note: the first two issues have been reported to the HDF Group and will be fixed in the next release.

The first is a bug in perform/sio_engine.c: on line 376, replace mkdir with HDmkdir.

The second is that the test scripts use Winsock (ws2_32.lib), but don't link against it. This can be fixed by running the following commands before configure:

$ echo 'libh5test_la_LIBADD=-lws2_32' >>test/Makefile.am

The third is that several HDF5 libraries have a dependency on libhdf5, but libtool isn't told about this. This can be fixed in the same manner as the ws2_32 issue:

$ echo 'libhdf5_cpp_la_LIBADD=$(LIBHDF5)' >>c++/src/Makefile.am
$ echo 'libhdf5_hl_la_LIBADD=$(LIBHDF5)' >>hl/src/Makefile.am
$ echo 'libhdf5_hl_cpp_la_LIBADD=$(LIBH5_HL)' >>hl/c++/src/Makefile.am

After editing the various Makefile.ams, we need to regenerate the Makefile.ins that configure uses:

$ aclocal
$ automake

The fourth and final issue is that C++ support is not enabled by default. To enable it, add –enable-cxx to the configure command line.

Finally:

$ LDFLAGS=-no-undefined ./configure --prefix=/opt/hdf --enable-cxx
$ make all install
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • diana/windows/building/hdf.1259932655.txt.gz
  • Last modified: 2022-05-31 09:23:14
  • (external edit)