Static linking considered harmful

Jakub Jelinek jakub at redhat.com
Wed Nov 22 15:51:24 UTC 2006


On Wed, Nov 22, 2006 at 07:33:37AM -0800, John Reiser wrote:
> > E.g. ideally we'd drop libpthread.a, librt.a, libstdc++.a, libgfortran.a,
> > libboost*.a, all GUI libs that have also *.so libs, etc.
> 
> libstdc++.a must stay in Fedora Core.  libstdc++ is not compatible AT ALL
> across versions, and there are _many_.  g++ has not learned or implemented
> a stable ABI (application binary interface); the "name mangling" to encode
> types is not even stable yet.

That's simply not true.  libstdc++ is backwards ABI compatible (similarly to
glibc etc.) between 3.4.x/4.0.x/4.1.x/4.2.x and I don't think that will
change in 4.3.x either.  In FC we include older libstdc++'s (2.96-RH,
3.2.x/3.3.x (those 2 were also backwards ABI compatible)) too, so unless
you use very old gcc, you should be just fine if you link dynamically.

> Even libgcc_s has a couple more years before it can be considered stable.

Care to share the details?  libgcc_s is symbol versioned and is backwards
compatible.  In FC we try to backport libgcc_s additions even from newer
gcc's than the one shipped, so e.g. current GCC 4.1.x-RH libgcc_s
has even all of GCC_4.2.0 stuff in it (and will add GCC_4.3.0 stuff soon).

	Jakub




More information about the fedora-devel-list mailing list