Criando 32 bits em um sistema de 64 bits

5

Estou tentando construir a extensão PHP memcache (v2.2.6) para i386 (32 bits) no meu x86_64 Ubuntu 11.04.

./configure usa o config.guess por padrão (que gera x86_64-unknown-linux-gnu no meu sistema), mas eu quero sobrescrever isso.

Como eu teria que proceder?

    
por thwd 07.05.2011 / 20:44

1 resposta

5

Você precisa de duas coisas para compilação cruzada: um compilador que pode gerar código para a arquitetura de destino e as bibliotecas estáticas ( *.a ) para a arquitetura de destino. Instale pelo menos o libc6-dev-i386 e possivelmente outros lib32.*-dev packages . O libc6-dev-i386 também extrai os componentes do gcc necessários para a compilação cruzada no gcc-multilib package . Em seguida, informe ao gcc para compilar o i386 passando o flag -m32 pela variável CFLAGS .

sudo apt-get install libc6-dev-i386 lib32ncurses5-dev … # whatever 32-bit libraries you need
export CFLAGS='-m32'
./configure …

Se você não encontrar todas as bibliotecas necessárias, provavelmente será mais fácil instalar um Ubuntu de 32 bits em um chroot . O Ubuntu envia dchroot do projeto buildd do Debian , o que torna a execução de um sistema chrooted fácil. Use debootstrap paraexecutarainstalação.Háum tutorial dchroot de aparência razoável nos fóruns do Ubuntu .

    
por 07.05.2011 / 21:19