On Tuesday 29 November 2005 10:53, Graham Murray wrote: > Paul de Vrieze <[EMAIL PROTECTED]> writes: > > It is also needed for third party apps that were linked against > > libstdc++.so.5. As long as those applications do not depend on other > > libraries that are linked against a newer c++ lib things are totally > > ok. > > But unfortunately is does happen. For example on my system (~x86 built > with gcc 3.4.4) opera is linked against libstdc++.so.5 and > libqt-mt.so.3 which in turn is linked against libstdc++.so.6
Opera is indeed an example of an application where it doesn't work. Mozilla, the jdk's and many games are however "good" examples. The general rule is that using libraries written in c++ doesn't work for transitioning. This is partly caused by the fact that the linker makes all symbols global, and as such doesn't look at (or record) the soname of the library where the symbol is supposed to come from. Please be aware though that doing so would still not fix c++ issues as extending objects with one symbol table (and library of origin) with objects (children) with another symbol table (and library of origin) is bound to break. If for example a library function returns a c++ string object. Which methods should then be used on this object? Paul ps. The sandbox we use in portage actually also relies on this behaviour of the linker, as we replace glibc symbols by our own versions of them that check permissions. -- Paul de Vrieze Gentoo Developer Mail: [EMAIL PROTECTED] Homepage: http://www.devrieze.net
pgpssmaZzoOLH.pgp
Description: PGP signature