From owner-freebsd-questions@FreeBSD.ORG Tue May 13 16:20:24 2008 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E26AE1065672 for ; Tue, 13 May 2008 16:20:24 +0000 (UTC) (envelope-from kris@FreeBSD.org) Received: from weak.local (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 264CE8FC1F; Tue, 13 May 2008 16:20:23 +0000 (UTC) (envelope-from kris@FreeBSD.org) Message-ID: <4829BFC9.5010901@FreeBSD.org> Date: Tue, 13 May 2008 18:20:25 +0200 From: Kris Kennaway User-Agent: Thunderbird 2.0.0.14 (Macintosh/20080421) MIME-Version: 1.0 To: Mel 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> In-Reply-To: <200805131630.03511.fbsd.questions@rachie.is-a-geek.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: glyn@millingtons.org, freebsd-questions@freebsd.org Subject: Re: Linux compat library error: ELF file OS ABI invalid X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 May 2008 16:20:25 -0000 Mel wrote: > On Tuesday 13 May 2008 15:48:58 Glyn Millington wrote: >> Mel 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. Kris