O pacote ia32-libs
contém uma grande coleção de bibliotecas x86_32. Se o seu programa puder ser executado apenas com essas bibliotecas, você está pronto. Existem também ferramentas de desenvolvimento de 32 bits no gcc-multilib
e binutils-multiarch
pacotes.
Se você precisar ir além disso, execute um sistema de 32 bits em um chroot. O Debian e o Ubuntu vêm com ferramentas que tornam isso fácil, principalmente schroot , e debootstrap para instalação. Configurar um schroot e instale seu sistema de 32 bits dentro dele . Chamar schroot
cuida de chamar setpersonality()
, o que, em particular, torna uname()
return i686
e não x86_64
. Ter uname
retornando um valor inesperado é provavelmente o que confundiu seu aplicativo quando você tentou executá-lo diretamente no sistema de 64 bits. Lembre-se de desativar os serviços no chroot (o guia com o qual eu fiz a ligação explica como) e fazer atualizações de segurança no chroot (você não executará nenhum serviço lá, mas pode haver bugs nas bibliotecas).
Uma máquina virtual não é usada aqui. Você teria todos os problemas de manutenção de um chroot, além dos da VM, mais os da separação (uso da memória, uso do disco,…), além da instância separada do Apache na VM, mais o redirecionamento no host, mais possivelmente problemas de desempenho.