[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Calling 64 bit apps from 32 bit Chroot]



rainer herrendoerfer <rainer.2@tiscali.de> writes:

> I had this:
> $ cat /etc/ld.so.conf
> /usr/X11R6/lib
> # chroot i386 system libs
> /var/chroot/sarge-ia32/lib
> /var/chroot/sarge-ia32/usr/lib
> /var/chroot/sarge-ia32/usr/X11R6/lib
> /var/chroot/sarge-ia32/usr/local/lib
>
> /emul/ia32-linux/lib
> /emul/ia32-linux/usr/lib
> /emul/ia32-linux/usr/X11R6/lib

You probably want to remove those entries as those libraries are
redundant with the ones in your chroot.  You don't really need
ia32-libs anymore when you use the libs from your chroot.

> /lib/i486-linux
> /usr/lib/i486-linux
> /usr/X11R6/lib/i486-linux
> /usr/lib/GNUstep/System/Library/Libraries
>
> and
> $ ls -l /var/chroot/sarge-ia32/lib |grep ld
> lrwxrwxrwx  1 root root      18 2005-07-27 18:06 ld-2.3.2.so ->
> /lib/ld-linux.so.2

This should be the other way around.

/lib/ld-linux.so.2 -> /var/chroot/sarge-ia32/lib/ld-2.3.2.so

Just run

ln -s /var/chroot/sarge-ia32/lib/ld-2.3.2.so /lib/ld-linux.so.2

> for me it looks like I should remove /lib/ld-linux-x86-64.so.2 and
> substitute it with a link to /Path/to/chroot/lib/, with the same name,

Don't do that!  This will break your 64 bit binaries.

> Meanwhile I tried to make a mount point /var/chroot/sarge-ia32/root64
> and mounted 64's / there. I could see 64 bit tree from 32, but xmms and
> xine started neither.

There you have the same problem.  The 64 bit apps don't find their
linker.  And if they would that linker wouldn't find the 64 bit libs.

You would need

/lib/ld-linux-x86-64.so.2 -> /root64/lib/ld-2.3.2.so

and /root64/lib, /root64/usr/lib and so on in /etc/ld.so.conf _within_
your chroot.

AFAIK, the path to the linker is compiled into each dynamic binary.
For 32 bit binaries it is /lib/ld-linux.so.2 and for 64 bit binaries
it is /lib/ld-linux-x86-64.so.2.  These linkers then look for
compatible libraries in some default directories and in the
directories listed in /etc/ld.so.conf.

Matthias



Reply to: