Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Feb 2012 14:32:51 -0800
From:      Steve Kargl <sgk@troutmask.apl.washington.edu>
To:        Diane Bruce <db@db.net>
Cc:        Konstantin Belousov <kostikbel@gmail.com>, freebsd-current@FreeBSD.org, Dimitry Andric <dim@FreeBSD.org>, freebsd-ports@FreeBSD.org
Subject:   Re: rtld or lang/gcc cannot find libgcc_s.so.1
Message-ID:  <20120221223251.GA23053@troutmask.apl.washington.edu>
In-Reply-To: <20120221220053.GA44386@night.db.net>
References:  <20120221182850.GA20768@troutmask.apl.washington.edu> <20120221185754.GL55074@deviant.kiev.zoral.com.ua> <20120221194259.GA21185@troutmask.apl.washington.edu> <4F440E8B.9020306@FreeBSD.org> <20120221220053.GA44386@night.db.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Feb 21, 2012 at 05:00:53PM -0500, Diane Bruce wrote:
> On Tue, Feb 21, 2012 at 10:37:15PM +0100, Dimitry Andric wrote:
> > On 2012-02-21 20:42, Steve Kargl wrote:
> > ...
> > > Yes, /lib comes before /usr/local/lib/gcc46.  I suppose
> > > that this is a heads up for gerald@. lang/gcc is used by
> > > the ports collections to build a large number of other
> > > ports, so others are likely to hit this issue.
> 
> Does -rpath not help ?

I already mentioned that I can add '-rpath /usr/local/lib/gcc46'
to my various projects.  I can also build with -static to avoid
rtld.  One can also use LD_LIBRARY_PATH.  

The issue seems to be that lang/gcc will be installed after
system start, and 'ldconfig -m' appends new shared libraries
to the hints file.  This means that libraries with the same
name but different locations will be found via the order of the
search path in the hints file, and one gets the wrong library.
That is, with the following

troutmask:root[256] ldconfig -r | grep libgcc_s
        29:-lgcc_s.1 => /lib/libgcc_s.so.1
        723:-lgcc_s.1 => /usr/local/lib/gcc46/libgcc_s.so.1

29 will be found before 723.  While I can work around the
issue, lang/gcc is used by a rather large boatload of ports
during the building process and I suspect that a large 
number of FreeBSD users use lang/gcc for their everyday
compiler.  The question is how do we, the FreeBSD project,
deal with this issue, so that the general user base does not
get hit with it. 

There are a few solutions:
1) Set ldconfig_paths in /etc/rc.conf to cause ${PORTSDIR}/lib to
   be scanned before /lib and /usr/lib.
2) Use /etc/ld.so.conf to cause ${PORTSDIR}/lib to be scanned
   for /lib and /usr/lib.
3) Add a new option to ldconfig to prepend new libraries to
   the hints files and fix the ports to use this option instead
   of -m.
4) Suggestions from people that are brighter than I.

-- 
Steve



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120221223251.GA23053>