I've got some code built on Solaris with gcc 4.5.0. It is linked against the library
/usr/local/gcc-4.5.0/lib/libstdc++.so.6
Solaris ships with gcc 3.4.3 - i.e. much older. Now when I create a binary, and
pass that to someone else (or even if run on the same computer with a different
linker search path I get a problem. Instead of the binary linking against the
gcc 4.5.0 version of the library, it uses
/usr/lib/libstdc++.so.6
For 99% of things, using the older library does not actually cause a problem,
but for one program it does, and results in and error message:
RuntimeError: ld.so.1: gfan: fatal: relocation error: file
/export/home/test/sage-4.6.alpha3/local/bin/gfan: symbol
_ZNSt15_List_node_base7_M_hookEPS_: referenced symbol not found
Is there a way I can see what c++ library someone has, and determine if it's
older than the one I built the program with? If so, they need to get a more
recent library and have that in their linker search path before the old one.
dave