portability of shared libraries

Nix nix@esperi.org.uk
Wed Apr 6 10:29:00 GMT 2005


On 5 Apr 2005, Grigory Zagorodnev mused:
> So the possible solution for you is to hide libstdc++ symbols from
> run-time dynamic linking by means of a version script. Script like this
> will hide all symbols except those you define as global-visible:
>  
>      FOO {
>          global:
>                  <your symbols>; 
>          local: 
>                  *; 
>      }; 
> 
> Use "-Wl,--version-script,script.name" to feed script to the linker.

The danger is that if you then pass instances of libstdc++ classes
between routines that rely on different libstdc++ instances, things will
go *very* wrong, even if the ABIs and class layouts are compatible (the
allocators will get rightly confused).

-- 
This is like system("/usr/funky/bin/perl -e 'exec sleep 1'");
   --- Peter da Silva



More information about the Gcc-help mailing list