On Tue, Nov 28, 2006 at 10:44:29AM -0500, Jakub Jelinek wrote:
For programs which don't have such requirements (the vast
majority),
an analysis of the libraries the (dynamically linked) program links against
(or dlopens) is needed. There are libraries which keep ABI stable and
maintain backwards compatibility (either through symbol versioning or
by strictly only adding new symbols, never changing the semantics of
old entry points or removing symbols), there are libraries that do that
mostly, but from time to time bump SONAME, there are libraries which
change their ABI (and bump SONAME) often.
For the first category (e.g. glibc, libX11), the rule of thumb is
link dynamically, don't include the libraries with your program,
compile and link against the oldest version you still want to support.
Ah but you see, glibc does not maintain backwards compatilibity.
./nscube: relocation error: ./nscube: symbol errno, version GLIBC_2.0 not defined in file
libc.so.6 with link time reference
Thankfully, that ISV also provided a statically linked version.
OG.