Jako przykład:
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.
Zgaduję gdzieś po drodze po próbie naprawienia komunikatu o błędzie:
/ usr / bin / ld: nie można znaleźć crt1.o: Brak takiego pliku lub katalogu
Całkowicie zmiksowałem wszystko. Czy ktoś mógłby doradzić?
Odpowiedzi:
Musisz zainstalować
gcc-multilib
pakiet, który przenosi 32-bitowe nagłówki do 64-bitowego systemu operacyjnego.źródło
Działa to dla mnie dobrze, na świeżej instalacji onirycznej.
/usr/include/x86_64-linux-gnu/bits/predefs.h
jest dostarczany przez pakiet libc6-dev, być może nie jest poprawnie zainstalowany?Możesz „ponownie zainstalować” ten pakiet za pomocą:
Jeśli jednak ten plik jest obecny, wygląda na to, że ścieżka wyszukiwania twojego kompilatora nie szuka odpowiedniego miejsca dla tego pliku. Możesz to sprawdzić, wykonując następujące czynności:
który powinien wydrukować ścieżkę wyszukiwania dla plików dołączanych. Mój mówi:
Jeśli to nie to samo, powiedziałbym, że istnieje rozbieżność wersji między niektórymi waszymi pakietami niezbędnymi do kompilacji. Sprawdź, czy masz odpowiednie wersje pakietów gcc i libc6-dev. W tej chwili oneiric powinny to być:
źródło
Miałem ten sam problem z moim kompilatorem avr-gcc.
Połączyłem pliki i foldery w / usr / include / i386-linux-gnu / z folderem, w którym avr-gcc szuka plików -file. Na przykład: / usr / lib / avr / include /
Może coś podobnego działa w przypadku gcc. Do
źródło