One way around the issue is called ³early binding². You could build
libtwo.so such that it binds to its own symbols, rather than allowing the
loader to resolve the unbound symbols with the ones provided by your
executable.
Is there a way to force the compiler/linker to do this?
Use the -Bsymbolic linker option.
Be very careful with this: in my experience it can lead to a whole
world of problems with data symbols and copy relocs.
At this point I think I will just bite the bullet and wrap my libraries
in namespaces. Pain, but probably worth it in the long run.
- Brian