This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Hi Davide, > We've installed netcdf in Yellowstone with both shared and static > libraries. When querying nc-config for the libraries, one gets what follows: > > $ nc-config --libs > -L/glade/apps/opt/netcdf/4.2/gnu/4.7.2/lib -lnetcdf > > > Which is perfectly fine for an user compiling programs against the > shared library (our RPATH takes care of the HDF5 dependency). However, > if the user is compiling statically, this output is incomplete: it let > them resolve the static archive which we installed in the same > directory, but it does not let them resolve the HDF5 dependencies. > > I believe a --static-libs or something of that flavor should be added to > nc-config to cover this use case, but maybe there is already a way. > Please advice. We distribute recent versions of the netCDF C and Fortran libraries with support for "pkg-config", which is a general version of package-specific scripts like nc-config and nf-config that outputs information for shared libraries by default, but can optionally output library information suitable for static linking. You would use pkg-config much like nc-config, to help compile and link an application, for example: $ export PKG_CONFIG_PATH=/opt/lib/pkgconfig $ gcc -o test test.c $(pkg-config --libs --cflags netcdf) Note: "cflags" here means "compiler flags" not "C flags", so you could use the same command for gfortran as gcc: $ gfortran -o test test.c $(pkg-config --libs --cflags netcdf-fortran) You may want to check if you have the pkg-config command installed and look at the documentation to make sure it supports the --static option. Here's examples of the output of pkg-config with and without --static on my platform, resulting from a standard "sudo make install": $ pkg-config --cflags --libs netcdf -I/usr/local/include -L/usr/local/lib -L/machine/russ/installs/hdf5_1811/lib -L/opt/lib -lnetcdf -lhdf5_hl -lhdf5 -lm -lz -lcurl $ pkg-config --static --cflags --libs netcdf -I/usr/local/include -L/usr/local/lib -L/machine/russ/installs/hdf5_1811/lib -L/opt/lib -lnetcdf -lhdf5_hl -lhdf5 -lm -lz -lcurl you have mail in /var/spool/mail/russ $ pkg-config --cflags --libs netcdf-fortran -I/usr/local/include -L/usr/local/lib -lnetcdff $ pkg-config --static --cflags --libs netcdf-fortran -I/usr/local/include -L/usr/local/lib -L/machine/russ/installs/hdf5_1811/lib -L/opt/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lm -lz -lcurl --Russ > Regards, > Davide Del Vento, > NCAR Computational & Information Services Laboratory > Consulting Services Software Engineer > http://www2.cisl.ucar.edu/uss/csg/ > SEA Chair http://sea.ucar.edu/ > > Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu Ticket Details =================== Ticket ID: PUN-322109 Department: Support netCDF Priority: Normal Status: Closed