NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
It is more complicated with netCDF4 but there is the nc-config tool that should generate what you need for linking and in the correct order. -Roy On Sep 13, 2010, at 6:50 AM, stephen.pascoe@xxxxxxxxxx wrote: > Thanks Cedric and Mario, > > Apart from demonstrating that my C/C++ is a bit rusty ;-), I think there is a > take-home message here. Linking code against NetCDF has got a lot more > complex with NetCDF4. The excellent documentation would be further improved > with tips on compiling and linking. > > If this can be done I'd also recommend pointing out the usefulness of -fPIC. > I often find NetCDF libraries are installed statically without > position-independent code. This makes them unsuitable for wrapping inside > dynamic libraries used in dynamic language bindings: e.g. CDAT and > netcdf4-python > > Thanks, > Stephen. > > --- > Stephen Pascoe +44 (0)1235 445980 > British Atmospheric Data Centre > Rutherford Appleton Laboratory > > -----Original Message----- > From: Cedric Roux [mailto:cedric.roux@xxxxxxxxxx] > Sent: 13 September 2010 14:35 > To: Pascoe, Stephen (STFC,RAL,SSTD) > Cc: netcdfgroup@xxxxxxxxxxxxxxxx > Subject: Re: [netcdfgroup] Linker option ordering when linking to HDF5 > > stephen.pascoe@xxxxxxxxxx wrote: >> 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 > > g++ -static -L... -I... foo.c -Wl,--start-group -lnetcdf -lhdf5 > g++ -lhdf5_hl -lm -lz -Wl,--end-group -o foo > may work too (not tested). See the manpage of 'ld'. > --start-group/--end-group is what you're after. > Hope that helps. > Cédric > -- > Scanned by iCritical. > > _______________________________________________ > netcdfgroup mailing list > netcdfgroup@xxxxxxxxxxxxxxxx > For list information or to unsubscribe, visit: > http://www.unidata.ucar.edu/mailing_lists/ ********************** "The contents of this message do not reflect any position of the U.S. Government or NOAA." ********************** Roy Mendelssohn Supervisory Operations Research Analyst NOAA/NMFS Environmental Research Division Southwest Fisheries Science Center 1352 Lighthouse Avenue Pacific Grove, CA 93950-2097 e-mail: Roy.Mendelssohn@xxxxxxxx (Note new e-mail address) voice: (831)-648-9029 fax: (831)-648-8440 www: http://www.pfeg.noaa.gov/ "Old age and treachery will overcome youth and skill." "From those who have been given much, much will be expected"
netcdfgroup
archives: