Como um 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.
Adivinhar em algum lugar ao longo do caminho depois de tentar corrigir a mensagem de erro:
/ usr / bin / ld: não é possível encontrar crt1.o: Esse arquivo ou diretório não existe
Eu estraguei tudo completamente. Alguém poderia por favor aconselhar?
Respostas:
Você precisa instalar um
gcc-multilib
pacote que traga cabeçalhos específicos de 32 bits ao seu sistema operacional de 64 bits.fonte
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 isso não esteja instalado corretamente?Você pode "reinstalar" esse pacote com:
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:
que deve imprimir o caminho de pesquisa para incluir arquivos. O meu diz:
Se isso não for o mesmo, eu diria que há uma incompatibilidade de versão entre alguns dos seus pacotes essenciais à construção. Verifique se você possui as versões corretas dos pacotes gcc e libc6-dev. No momento, onírico, estes devem ser:
fonte
Eu tive o mesmo problema com meu compilador avr-gcc.
Vinculei os arquivos e pastas em / usr / include / i386-linux-gnu / a uma pasta na qual o avr-gcc procura por -files. Por exemplo: / usr / lib / avr / include /
Talvez algo semelhante funcione para o gcc. Para
fonte