Re: How to choose the right libstdc++.so with soft-float?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux