Problemas ao compilar um binário de 32 bits em uma máquina de 64 bits

13

Estou tentando compilar um programa de corrente alternada como um binário de 32 bits em vez de 64 bits. Comecei apenas adicionando -m32e obtive alguns erros. Pesquisando um pouco, deparei-me com uma nota para instalar ia32-libs. A execução apt-get install ia32-libsresultou em uma notificação de que ela já estava instalada e na versão mais recente.

Há uma cadeia de bibliotecas cada uma, incluindo a próxima até que ela falhe:

/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory

Parece estar incluindo versões de 32 bits dos outros /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/ ...

o que estou perdendo?

Matt
fonte

Respostas:

39

A resposta de Lekensteyn entrou em conflito com muitos pacotes existentes para mim (no onírico de 64 bits).

Em vez disso, fiz isso, que puxou o libc6-dev-i386pacote:

apt-get install gcc-multilib
AB
fonte
7

ia32-libscontém apenas algumas bibliotecas de compatibilidade que ainda não foram migradas para o Multi Arch. Para compilar bibliotecas de 32 bits, você precisa instalar as bibliotecas de 32 bits e os arquivos de desenvolvimento para C:

sudo apt-get install libc6-dev:i386

Veja também: O recurso multiarca em 11.10 significa a morte da força - a arquitetura é instalada?

Lekensteyn
fonte
A instalação libc6-dev:i386insistiu em remover todo o conjunto de compiladores gnu (o que me deu um pequeno ataque cardíaco), mas depois de usar sudo apt-get install build-essentialtudo funcionou perfeitamente.
Matt
Para mim, ele também desinstalou a nvidia-current ... reinstalou sem problemas.
12124 Jeff
1
Observe que a opção oferecida pelo alberge parece melhor, pois não removerá muitas outras coisas para instalar as bibliotecas de 32 bits.
Fabio Zadrozny