I’m using spack to build HDF5 on the Theta supercomputer, with the gcc 7.3.0 compiler. At the moment, spack is pointing to version 1.10.6 as the latest, but this version doesn’t build. I successfully build version 1.10.1, so the problem appeared somewhere in between those two versions.
Looking at the build log, I see the following:
LD_LIBRARY_PATH="$LD_LIBRARY_PATH`echo | \
sed -e 's/-L/:/g' -e 's/ //g'`" \
./H5make_libsettings > H5lib_settings.c || \
(test $HDF5_Make_Ignore && echo "*** Error ignored") || \
(rm -f H5lib_settings.c ; exit 1)
CC H5lib_settings.lo
LD_LIBRARY_PATH="$LD_LIBRARY_PATH`echo | \
sed -e 's/-L/:/g' -e 's/ //g'`" \
./H5detect > H5Tinit.c || \
(test $HDF5_Make_Ignore && echo "*** Error ignored") || \
(rm -f H5Tinit.c ; exit 1)
/bin/sh: line 4: 26196 Illegal instruction (core dumped) LD_LIBRARY_PATH="$LD_LIBRARY_PATH`echo | sed -e 's/-L/:/g' -e 's/ //g'`" ./H5detect > H5Tinit.c
Makefile:1926: recipe for target 'H5Tinit.c' failed
It seems that HDF5 is building a program H5detect, then calling it, however this sort of thing cannot be done on Theta as the compiler actually cross-compiles for the compute node. Programs compiled that way cannot be (or are not guaranteed to) run on the login node. I suspect this sort of thing would happen on other supercomputers.