gcc não funciona mais depois da atualização

8

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?

    
por hsmyers 25.11.2011 / 06:12

3 respostas

10

Você precisa instalar o pacote gcc-multilib que traz cabeçalhos específicos de 32 bits para o sistema operacional de 64 bits.

    
por user576557 09.12.2011 / 06:13
0

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 
    
por Jeremy Kerr 25.11.2011 / 08:06
0

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

    
por Benibr 19.12.2011 / 08:35

Tags