7.3. Compilazione di software in piattaforme bivalenti

Per sviluppare file binari per l'altra architettura in un'architettura bivalente, è necessario installare anche le rispettive librerie per la seconda architettura. Questi pacchetti sono chiamati rpmname-32bit. Sarà inoltre necessario disporre delle rispettive intestazioni e librerie dei pacchetti rpmname-devel e delle librerie di sviluppo per la seconda architettura di rpmname-devel-32bit.

La maggior parte dei programmi open source usano configurazioni di programma basate su autoconf. Per configurare un programma per la seconda architettura mediante autoconf, sovrascrivere le impostazioni normali del linker e del compilatore di autoconf eseguendo lo script configure con ulteriori variabili d'ambiente.

Il seguente esempio si riferisce a un sistema AMD64 o EM64T con una seconda architettura x86:

  1. Impostare autoconf per l'uso del compilatore a 32 bit:

    CC="gcc -m32"
  2. Istruire il linker per l'elaborazione degli oggetti a 32 bit:

    LD="ld -m elf64_i386"
  3. Impostare l'assemblatore per la generazione di oggetti a 32 bit:

    AS="gcc -c -m32"
  4. Accertarsi che le librerie per libtool e altri pacchetti derivino da /usr/lib:

    LDFLAGS="-L/usr/lib"
  5. Accertarsi che le librerie vengano memorizzate nella sottodirectory lib:

    --libdir=/usr/lib
  6. Accertarsi che vengano usate le librerie X a 32 bit:

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

Queste variabili non sono tutte necessarie per tutti i programmi; adattarle a seconda del programma.

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