Next revision
|
Previous revision
|
diana:windows:building:hdf [2009-11-12 17:30:34] dages created |
diana:windows:building:hdf [2022-05-31 09:29:31] (current) |
====== Building HDF4 and HDF5 ====== | ====== Building NetCDF, HDF4 and HDF5 on Windows ====== |
| |
===== HDF4 ===== | 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. |
| |
TBD | Yeah, right. Actually, [[windows:building:hdf4|HDF4]] is a nightmare, so we've left it out. |
| |
| ===== NetCDF ===== |
| |
| 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: |
| |
| $ LDFLAGS=-L/c/met.no/lib CPPFLAGS=-I/c/met.no/include ./configure --prefix=/c/met.no --disable-f90 --disable-examples |
| $ make all install |
| $ cp COPYRIGHT /c/met.no/copyright/netcdf.txt |
| |
| <del>Note the ''%%--enable-shared%%'' part; you can leave out ''%%--disable-f90%%'' and ''%%--disable-examples%%'' if you want, but keep ''%%--enable-shared%%''.</del> |
| |
===== HDF5 ===== | ===== HDF5 ===== |
| |
There are binaries available, and they're probably fine, but the headers are not, because HDF5 installs different headers depending on which compiler it was built with (which in itself is a bug). Luckily, building HDF5 from source is fairly easy. | 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 |
| |
| Finally, HDF5's ''configure.in'' uses the ''LT_INIT'' macro, which only works with very recent versions of automake. Edit ''configure.in'' and replace these two lines: |
| |
| LT_PREREQ([2.2]) |
| LT_INIT([dlopen]) |
| |
| with this: |
| |
| AC_LIBTOOL_DLOPEN |
| AM_PROG_LIBTOOL |
| |
| **XXX** alternative: use more recent [[windows:building:autotools|autotools]] versions, but this has repercussions for all other components |
| |
First, get the latest source from http://www.hdfgroup.org/HDF5/release/obtain5.html and extract it in a convenient place. Next, run ''configure'', and make sure to enable C++ support: | Now we need to regenerate everything: |
| |
$ ./configure --prefix=/opt/hdf5 --enable-cxx | $ aclocal |
| $ libtoolize --copy --force |
| $ autoheader |
| $ automake --add-missing --copy --foreign |
| $ autoconf |
| |
**Revisit later in re thread safety** | 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, build and install: | Finally: |
| |
$ make install | $ LDFLAGS=-L/c/met.no/lib CPPFLAGS=-I/c/met.no/include ./configure --prefix=/c/met.no --enable-cxx |
| $ make all install |
| $ cp COPYING /c/met.no/copyright/hdf5.txt |
| |
| **TODO** fix large file support! |