Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
diana:windows:building:hdf [2009-11-20 17:09:11]
dages
diana:windows:building:hdf [2022-05-31 09:29:31] (current)
Line 1: Line 1:
-====== Building HDF4 and HDF5 on Windows ======+====== 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. 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.
  
-===== HDF4 =====+Yeah, right.  Actually, [[windows:building:hdf4|HDF4]] is a nightmare, so we've left it out.
  
-First, get the latest source from http://www.hdfgroup.org/release4/obtain.html and extract it in a convenient place.+===== 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 =====
  
-First, get the latest source from http://www.hdfgroup.org/HDF5/release/obtain5.html and extract it in a convenient place.+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 is a bug in ''perform/sio_engine.c'' that needs to be fixed before compiling: on line 376, replace ''mkdir'' with ''HDmkdir''.+In HDF5 1.8.3, there are several issues we need to address before we can build the library.
  
-Before we run ''configure'', there are three issues we need to address.  The first is that due to the libtool brokenness mentioned [[windows:building:issues|here]], you have to regenerate the script:+//note: the first two issues have been reported to the HDF Group and will be fixed in the next release.//
  
-  $ aclocal +The first is a bug in ''perform/sio_engine.c'': on line 376, replace ''mkdir'' with ''HDmkdir''.
-  $ libtoolize --copy --force +
-  $ automake --add-missing --copy --foreign +
-  $ autoconf+
  
-If you did it right, the following command should not produce any output:+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'':
  
-  $ grep -rF dll.a .+  $ echo 'libh5test_la_LIBADD=-lws2_32' >>test/Makefile.am
  
-The second issue is that C++ support is not enabled by default, and the third is that the test scripts use Winsock (''ws2_32.lib''), but don'link against it.+The third is that several HDF5 libraries have a dependency on ''libhdf5'', but libtool isn'told about this This can be fixed in the same manner as the ''ws2_32'' issue:
  
-  $ env LIBS=-lws2_32 sh configure --prefix=/opt/hdf5 --enable-cxx+  $ 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 
 + 
 +Now we need to regenerate everything: 
 + 
 +  $ 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!
  • diana/windows/building/hdf.1258736951.txt.gz
  • Last modified: 2022-05-31 09:23:14
  • (external edit)