Dear list,

I've seen issues where a process links to one library compiled with the
OS-bundled G++ version and another that's compiled with a newer G++ version
(4.7 etc.). Libraries include boost, QT and their C++-based dependencies.

I raise this question as there are instances when a newer G++ version is
required for a project to work at all (because of compiler version
specifics, C++X11 support etc).


The typical error I've seen, is that exception handling goes bazonkas:

As soon as the default exception handler is trigged, an error message is
printed and then the process SIGSEGV:s.

Also, ordinary exception handling may malfunction and lead to SIGSEGV.


Picking up what others say on this,

 * #gcc on FreeNode say libstdc++ versions are *not* intercompatible with
each others,

   and also they say newer libstdc++ versions are *not* providing backwards
compatibility with older ones

 * FreeBSD published a workaround to the libstdc++ compatibility issue
using their "libmap.conf" feature:
http://www.freebsd.org/doc/en/articles/custom-gcc/article.html .



What is OpenBSD's take on this?;

What's the best practice?

If the only way is to actually recompile all dependency libraries in the
newer G++ version, then, is there a way to build ports and their
dependencies with a specific G++ version and then install them all in a
separate directory i.e. /usr/local/lib/g++-4.7-compiled/ ?

Thanks!
Mikael

Reply via email to