Todos os processadores amd64 (isto é, 64 bits x64) podem executar binários x86 de 32 bits. Além disso, na maioria dos sistemas operacionais, você pode executar programas x86 em um sistema operacional amd64. Por isso, muitas vezes é possível implantar binários x86 em processadores amd64.
Se é desejável fazer isso é um assunto diferente. Os sistemas operacionais de 64 bits geralmente vêm com um conjunto restrito de bibliotecas de 32 bits, portanto, se o seu programa usar algumas bibliotecas incomuns, será mais fácil instalar um executável de 64 bits. Dependendo do seu aplicativo, pode haver ou não uma vantagem de desempenho para binários de 32 ou 64 bits.
Se você decidir implantar executáveis de 64 bits, precisará de um ambiente de compilações cruzadas para a arquitetura amd64 (a.k.a. x86_64) em execução em uma arquitetura x86. Isso significa tanto um compilador quanto bibliotecas estáticas para vincular.
Uma instalação do gcc pode compartilhar frontends e incluir vários backends. Mas muitas distribuições não vêm com ferramentas de desenvolvimento amd64 em plataformas x86, então você pode ter que obter o seu próprio (o gcc é bastante simples de compilar cruzadamente). O mesmo vale para as bibliotecas vincularem (obviamente, depois de ter o compilador, você pode recompilá-las a partir da origem).
Como exemplo, o Ubuntu 10.04 no x86 vem com uma versão “multilib” do gcc e um backend amd64, além de um pequeno conjunto de pacotes de desenvolvimento de 64 bits ( libc6-dev-amd64 Instale libc6-dev-amd64 http: / /bit.ly/software-small e pacotes dependentes e dependentes).