help-guix
[Top][All Lists]
Advanced

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

Re: Multilib support: running 32-bit binaries on 64-bit systems


From: Mark H Weaver
Subject: Re: Multilib support: running 32-bit binaries on 64-bit systems
Date: Thu, 19 Apr 2018 09:07:32 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)

Hi Pierre,

Pierre Neidhardt <address@hidden> writes:

> Guix already supports cross-compilation out of the box of 32-bit
> packages on any architecture:
>
>       guix build --system=i686-linux PACKAGES...
>
> Now the question is: is it possible to run the produced binaries
> directly (no VM)?

Yes.

> Many other distributions have support for the so-called "multilibs",
> that is, a separate 32-bit library tree with the 32-bit linker
> configured to load those instead of their 64-bit counterparts.
>
> Does Guix have any provision for multilibs?

Yes, in fact Guix's support for multilibs is far more general.  Guix
supports not only 32-bit and 64-bit libraries on the same system, but an
arbitrary number of variants of C libraries.

For example, right now my x86_64 GuixSD system has one set of
libraries/executables based on glibc-2.26.105-g0890d5379c (from our
'master' branch), and one set of libraries/executables based on
glibc-2.27 (from our 'core-updates' branch), and I can use all of these
binaries freely on the same system without any conflicts or wrappers.

This works because instead of having a small ad-hoc set of global
locations where a few variants of the C library, dynamic linker, etc,
are stored (e.g. /lib, /lib64, etc), in Guix all of these components are
stored in /gnu/store, each with a unique hash.  Every executable and
every library in Guix has embedded within the absolute file name of all
of the components it depends on, including its dynamic linker, C
library, C runtime, bourne shell, etc.

Does that make sense?

       Mark



reply via email to

[Prev in Thread] Current Thread [Next in Thread]