Você precisa instalar o pacote gcc-multilib
que traz cabeçalhos específicos de 32 bits para o sistema operacional de 64 bits.
Como exemplo:
hsmyers@ubuntu:~/c_dev$ cat hello.c
#include <stdio.h>
int main(int argc,char **argv) {
printf("Hello World!\n");
return 0;
}
hsmyers@ubuntu:~/c_dev$ gcc -c -o hello.o hello.c
In file included from /usr/include/stdio.h:28:0,
from hello.c:1:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
Em um palpite em algum lugar ao longo do caminho depois de tentar corrigir a mensagem de erro:
/ usr / bin / ld: não é possível encontrar o crt1.o: Nenhum arquivo ou diretório desse tipo
Eu mungei as coisas completamente. Alguém poderia por favor avisar?
Você precisa instalar o pacote gcc-multilib
que traz cabeçalhos específicos de 32 bits para o sistema operacional de 64 bits.
Isso funciona bem para mim, em uma nova instalação onírica. /usr/include/x86_64-linux-gnu/bits/predefs.h
é fornecido pelo pacote libc6-dev, talvez não esteja instalado corretamente?
Você pode "reinstalar" esse pacote com:
sudo apt-get install --reinstall libc6-dev
No entanto, se esse arquivo estiver presente, parece que o caminho de pesquisa do seu compilador não está no lugar certo para esse arquivo. Você pode verificar executando o seguinte:
gcc --verbose -o hello hello.c
que deve imprimir o caminho de pesquisa para arquivos de inclusão. O meu diz:
#include <...> search starts here: /usr/lib/gcc/x86_64-linux-gnu/4.6.1/include /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/4.6.1/include-fixed /usr/include/x86_64-linux-gnu /usr/include
Se não for o mesmo, eu diria que há uma incompatibilidade de versão entre alguns dos seus pacotes essenciais de compilação. Verifique se você tem as versões corretas dos pacotes gcc e libc6-dev. Agora mesmo onírico, estes devem ser:
gcc 4:4.6.1-2ubuntu5
libc6-dev 2.13-20ubuntu5
Eu tive o mesmo problema com meu compilador avr-gcc.
Eu vinculei os arquivos e pastas em / usr / include / i386-linux-gnu / para uma pasta na qual o avr-gcc procura por arquivos. Por exemplo: / usr / lib / avr / include /
ln -s /usr/include/i386-linux-gnu/* /usr/lib/avr/include/
Talvez algo semelhante funcione para o gcc. Para