This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: How to choose the right libstdc++.so with soft-float?
Paul Smith writes:
> On Fri, 2007-01-05 at 11:12 +0000, Andrew Haley wrote:
> > Paul Smith writes:
> > >
> > > However, libstdc++ is handled differently: the compiler build generates
> > > both a lib/libstdc++.so and also a lib/soft-float/libstdc++.so (same
> > > names, different directories). On my target filesystem there is only
> > > one: /usr/lib/libstdc++.so and investigation shows this to be the fp
> > > version, not the soft-float version.
> >
> > This is very odd. Are you saying that when you do "make install" the
> > soft-float versions of the libraries aren't copied into $PREFIX at
> > all? If so, this is a bug.
>
> Thanks for the response Andrew!
>
> Well, the library not being installed is something easily resolved.
>
> The real question is, WHERE is it supposed to be installed, and how
> is it supposed to work?
>
> For libstdc++, unlike libgcc_s, the filenames for the soft- and
> hard-float versions are the same so (again unlike libgcc_s) they
> obviously have to be installed into different directories if both
> are present on the system at the same time (which is what we want,
> it seems to me).
That's usual for multilibbing, yes. We put them into different
directories: there should be a soft-float directory.
> Even more concerning, the soname for the soft- and hard-float
> versions of libstdc++ is the same (again, unlike libgcc_s), so even
> if both versions WERE installed (and both paths were configured via
> ldconfig or whatever) I don't see how the runtime linker could
> choose the right one!
It ought to be possible for ld.so to sort this out based on flags in
the object files, but this is a binutils/glibc issue.
> Either there's some deeper magic here that I'm unfamiliar with (quite
> likely!), or it's just not possible to have both the soft- and
> hard-float versions of libstdc++ available (and usable) on the same
> system at the same time (and again, unlike libgcc_s where this is quite
> possible and works fine).
>
> If someone can explain how this is supposed to work (or point me to the
> relevant docs etc.) then I'll be happy to investigate the simpler
> question of why "make install" is not doing the right thing... once I
> understand what "the right thing" is :)
This is controlled by the t-* files in the gcc/config/rs6000
directory. You should see something like:
MULTILIB_OPTIONS = msoft-float mcpu=common
MULTILIB_DIRNAMES = soft-float common
When you do a "make install" the soft-float directories are supposed
to be installed in $PREFIX. Does this really not work?
Andrew.