Hi Pierre, Pierre Neidhardt <ambre...@gmail.com> 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