Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 May 2012 18:15:59 +0200 (CEST)
From:      Oliver Fromme <olli@lurza.secnetix.de>
To:        freebsd-stable@FreeBSD.ORG
Subject:   i386 binaries on amd64: ldconfig problems
Message-ID:  <201205301615.q4UGFxSF051308@lurza.secnetix.de>

next in thread | raw e-mail | index | archive | help
Hi,

I've recently migrated my workstation from i386 to amd64
(finally, because I neeed to go beyond 4 GB RAM).  The
transition went smoothly so far, except for one thing:
I need to use several old i386 binaries, which all work
well except for one:  olvwm.

$ uname -rsm
FreeBSD 8.3-STABLE-20120528 amd64

$ olvwm
/libexec/ld-elf.so.1: /usr/local/lib/libXpm.so.4: unsupported file layout

$ file olvwm
olvwm: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD),
dynamically linked (uses shared libs), for FreeBSD 8.2 (802502), stripped

$ ldd olvwm
olvwm:
        libXpm.so.4 => not found (0x0)
        libolgx.so.3 => /usr/local/lib32/compat/libolgx.so.3 (0x280d1000)
        libXext.so.6 => not found (0x0)
        libX11.so.6 => not found (0x0)
        libm.so.5 => /usr/lib32/libm.so.5 (0x280df000)
        libc.so.7 => /usr/lib32/libc.so.7 (0x280f9000)

$ ldconfig -32 -r | head -2
/var/run/ld-elf32.so.hints:
        search directories: /usr/lib32:/usr/local/lib32:/usr/local/lib32/compat

$ ldconfig -32 -r | egrep 'libXpm|libXext|libX11'
        190:-lXpm.4 => /usr/local/lib32/compat/libXpm.so.4
        192:-lXext.6 => /usr/local/lib32/compat/libXext.so.6
        193:-lX11.6 => /usr/local/lib32/compat/libX11.so.6

So, the 32bit libraries are there, ldconfig knows about them,
but the runtime linker does not, apparently.

Interestingly, it works when I force the library path (this
is currently the work-around that I'm using):

LD_32_LIBRARY_PATH=/usr/local/lib32/compat ldd olvwm
olvwm:
        libXpm.so.4 => /usr/local/lib32/compat/libXpm.so.4 (0x280d1000)
        libolgx.so.3 => /usr/local/lib32/compat/libolgx.so.3 (0x280e1000)
        libXext.so.6 => /usr/local/lib32/compat/libXext.so.6 (0x280ef000)
        libX11.so.6 => /usr/local/lib32/compat/libX11.so.6 (0x280fe000)
        libm.so.5 => /usr/lib32/libm.so.5 (0x28216000)
        libc.so.7 => /usr/lib32/libc.so.7 (0x28230000)
        libxcb.so.2 => /usr/local/lib32/compat/libxcb.so.2 (0x2834b000)
        libXau.so.6 => /usr/local/lib32/compat/libXau.so.6 (0x28362000)
        libXdmcp.so.6 => /usr/local/lib32/compat/libXdmcp.so.6 (0x28365000)
        libpthread-stubs.so.0 => /usr/local/lib32/compat/libpthread-stubs.so.0 (0x2836a000)
        librpcsvc.so.5 => /usr/lib32/librpcsvc.so.5 (0x2836c000)

But actually I shouldn't have to use LD_32_LIBRARY_PATH.
I mean, it's ldconfig's job to configure the directories for
locating the libraries.

What is wrong here?

Best regards
   Oliver

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart

FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd

Blogging:  Never before have so many people
with so little to say said so much to so few.



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