Linux compat library error: ELF file OS ABI invalid

Kris Kennaway kris at FreeBSD.org
Wed May 14 08:00:40 UTC 2008


Glyn Millington wrote:
> Kris Kennaway <kris at FreeBSD.org> writes:
> 
>> Mel wrote:
>>> On Tuesday 13 May 2008 15:48:58 Glyn Millington wrote:
>>>> Mel <fbsd.questions at 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
> 
> 

You re-ran the ldconfig command that rescans the specified directory to 
rebuild its cache, right? :)

Kris



More information about the freebsd-questions mailing list