Re: [PATCH] fixes for /usr/lib64 systems
| From: | Joe Orton | Date: | Thu, 06 Mar 2003 11:52:15 +0000 |
| Subject: | Re: [PATCH] fixes for /usr/lib64 systems | ||
| References: | 1 2 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-94834@lists.php.net to get a copy of this message | ||
On Thu, Mar 06, 2003 at 07:27:05PM +0800, James Devenish wrote:
> In message <20030306102514.GA31291@redhat.com>
> on Thu, Mar 06, 2003 at 10:25:14AM +0000, Joe Orton wrote:
> > Hi, I've got a bunch of fixes for systems which have system libraries in
> > /usr/lib64 rather than /usr/lib - these are needed for some upcoming
> > 64-bit Linux ports. These fixes are based on patches from SuSE
> > developers <uli@suse.de> <ro@suse.de>.
> >
> > Should I submit changes to ext/*/config.m4 in bulk or individually?
> >
> > Here's the first fix to prevent adding /usr/lib64 to LDFLAGS:
> [...]
> > + -L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/) ;;
>
> Of all the problems I've had using PHP on 64-bit platforms (e.g. bug
> #21973, which refers mainly to lib directory naming under commercial
> 64-bit environments), this was not one of them -- yay.
>
> So I am curious:
> - What is the purpose of having the mechanism to remove or not remove
> /usr/lib (and why not do the same for /lib and other vendor
> directories)?
>
> - Why do 64-bit Linux operating systems need the special hard-coded
> treatment?
> - Will the same be done for other operating systems?
/usr/lib64 exists so that you can have 64-bit libraries installed
alongside 32-bit libraries in /usr/lib - this is a precedent that comes
from Sun or SGI or somewhere I believe. IRIX is the top Google hit for
"lib64" in any case.
(In fact I think you can get /usr/lib32 as well for some IRIX/MIPS,
since there are two different flavours of 32-bit ABI)
Adding /usr/lib64 or /usr/lib to the library search path at minimum
causes a re-ordering of the library search path, which means in some
circumstances you pick up the wrong versions of libraries.
e.g. if you have a libfoo in /usr/lib, but you want to compile against a
different version you have installed in /home/jim/lib, you start with
-L/home/jim/lib -lfoo. If the configure script then adds -L/usr/lib to
LDFLAGS, you might end up with the system libfoo again, which is wrong.
On a lib64 system, if you do have the 32-bit libraries installed in
/usr/lib, but want to compile against the 64-bit libraries in
/usr/lib64, adding /usr/lib to the library search path breaks everything
horribly, since you pick up the 32-bit libc etc.
Regards,
joe