Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 May 2008 18:37:04 +0100
From:      Glyn Millington <glyn@millingtons.org>
To:        Kris Kennaway <kris@FreeBSD.org>
Cc:        Mel <fbsd.questions@rachie.is-a-geek.net>, freebsd-questions@freebsd.org
Subject:   Re: Linux compat library error:  ELF file OS ABI invalid
Message-ID:  <86wsly6r7j.fsf@nowhere.org>
In-Reply-To: <4829BFC9.5010901@FreeBSD.org> (Kris Kennaway's message of "Tue\, 13 May 2008 18\:20\:25 %2B0200")
References:  <86tzh2oc1t.fsf@nowhere.org> <200805131515.40832.fbsd.questions@rachie.is-a-geek.net> <8663tiiab9.fsf@nowhere.org> <200805131630.03511.fbsd.questions@rachie.is-a-geek.net> <4829BFC9.5010901@FreeBSD.org>

index | next in thread | previous in thread | raw e-mail

Kris Kennaway <kris@FreeBSD.org> writes:

> Mel wrote:
>> On Tuesday 13 May 2008 15:48:58 Glyn Millington wrote:
>>> Mel <fbsd.questions@rachie.is-a-geek.net> writes:
>>>> On Tuesday 13 May 2008 14:05:43 Glyn Millington wrote:
>>>>>>>>> Trying to launch Linux Open Office 2.4 I get the following error
>>>>>>>>> message ,----
>>>>>>>>>
>>>>>>>>> | /usr/compat/linux/opt/openoffice.org2.4/program/soffice.bin:
>>>>>>>>> | error while loading shared libraries:
>>>>>>>>> | /usr/local/lib/libXext.so.6: ELF file OS ABI invalid
>>>>>>>>>
>>>>>>>>> `----
>>>>> that include statement leads to /usr/X11R6
>>> Wow - can I just check that I have this right before I do it?!
>>>
>>>> Best fix:
>>>> rm /usr/X11R6
>>> get rid of /usr/X11R6, which on a system-wide basis is a link to /usr/local
>>>
>>>> touch /usr/X11R6
>>> Create an empty  *file* /usr/X11R6
>>>
>>>> chflags schg /usr/X11R6
>>> make it system-immutable
>>>
>>>> /sbin/ldconfig -m /usr/local/lib (just to force the linker to re-read the
>>>> dupes).
>>> Merge new stuf in the /usr/local/lib directory into the hints file
>>>
>>>> As a bonus, the old apps you still have pointing to /usr/X11R6
>>> But the app in question needs to get at
>>>
>>> /usr/compat/linux/usr/X11R6/
>>
>> The app however looks for /usr/X11R6/lib/libXfoo.so.1. If both exist
>> in base system and linux emulation, then the linker will hand it the
>> first one it finds, which because of the /usr/X11R6 symlink to
>> /usr/local will be the FreeBSD one.
>
> The lookup order for linux binaries is /compat/linux/foo first, then
> /foo if the former does not exist.  So if /compat/linux/usr/X11R6
> exists, then it is seen by linux binaries (similarly for files below
> this path).  As far as I know, this file should be a directory, not a
> symlink.  Moreover, the desired libXext.so.6 lives in that
> directory. It is a symlink pointing to another file in the same
> directory.  If neither exist (or exist but are corrupted), then the
> linux binary will fall back to the bogus FreeBSD one in another search
> path.


Sorry Kris, I was in part plain wrong in my first reply to this one.

Linking /compat/linux/usr/X11R6 to /compat/linux/usr/local fixed my
initial problem


>>>>>>>>> | /usr/compat/linux/opt/openoffice.org2.4/program/soffice.bin:
>>>>>>>>> | error while loading shared libraries:
>>>>>>>>> | /usr/local/lib/libXext.so.6: ELF file OS ABI invalid

What I still don't get is why ldconfig doesn't find the the X11R6
directory, when /compat/linux/etc/ld.so.conf point at it


include ld.so.conf.d/*.conf
/lib
/usr/lib
/usr/local/lib

it seems to be ignoring the first line.

Either there is a real problem here or the real problem is my ignorance,
and I'm not sure which it is!

with thanks yet again


atb


Glyn


home | help

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