I've noticed that when building statically linked executables the order
of the link options is important. For instance:
$ g++ -static -L... -I... foo.c -lnetcdf -lhdf5 -lhdf5_hl -lm -lz -o foo
/usr/local/lib/libhdf5_hl.a(H5LT.o): In function `H5LT_dtype_to_text':
H5LT.c:(.text+0x26e4): undefined reference to `H5Tget_cset'
H5LT.c:(.text+0x290b): undefined reference to `H5Tset_cset'
H5LT.c:(.text+0x2a55): undefined reference to `H5Tset_cset'
H5LT.c:(.text+0x2c4f): undefined reference to `H5Tget_tag'
/usr/local/QC/lib/libhdf5_hl.a(H5LTparse.o): In function `H5LTyyparse':
H5LTparse.c:(.text+0xe85): undefined reference to `H5Tset_tag'
H5LTparse.c:(.text+0x1077): undefined reference to `H5Tset_cset'
collect2: ld returned 1 exit status
However this works:
$ g++ -static -L... -I... foo.c -lnetcdf -lhdf5_hl -lhdf5 -lm -lz -o foo
Is this expected and if so is it documented anywhere?
Thanks,
Stephen.
---
Stephen Pascoe +44 (0)1235 445980
British Atmospheric Data Centre
Rutherford Appleton Laboratory
--
Scanned by iCritical.