7.3. Compilación de software en plataformas de doble arquitectura

En una doble arquitectura, para poder desarrollar binarios para la otra arquitectura es necesario instalar adicionalmente las respectivas bibliotecas para la segunda arquitectura. Estos paquetes se denominan rpmname-32bit. También es necesario disponer de los respectivos encabezados y bibliotecas procedentes de los paquetes rpmname-devel y de las bibliotecas de desarrollo para la segunda arquitectura procedentes de rpmname-devel-32bit.

La mayoría de los programas de código abierto utilizan una configuración basada en el comando autoconf. Para utilizar autoconf para configurar un programa para la segunda arquitectura, sobrescriba el compilador normal y los ajustes de enlazador de autoconf ejecutando el guión configure con variables de entorno adicionales.

El ejemplo que sigue hace referencia a un sistema AMD64 o EM64T con x86 como segunda arquitectura:

  1. Defina autoconf para utilizar el compilador de 32 bits:

    CC="gcc -m32"
  2. Ordene al enlazador que procese objetos de 32 bits:

    LD="ld -m elf64_i386"
  3. Defina el ensamblador para que genere objetos de 32 bits:

    AS="gcc -c -m32"
  4. Indique que las bibliotecas para libtool etc. provienen de /usr/lib:

    LDFLAGS="-L/usr/lib"
  5. Indique que las bibliotecas se almacenen en el directorio lib:

    --libdir=/usr/lib
  6. Indique que se utilicen las bibliotecas X de 32 bits:

    --x-libraries=/usr/X11R6/lib/

No todos los programas necesitan todas estas variables. Adáptelas al programa en cuestión.

CC="gcc -m64"            \
LDFLAGS="-L/usr/lib64;"  \
        .configure       \
          --prefix=/usr  \
          --libdir=/usr/lib64
make
make install