Como ejemplo:
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.
Supongo que en algún lugar del camino después de intentar corregir el mensaje de error:
/ usr / bin / ld: no se puede encontrar crt1.o: no existe tal archivo o directorio
He estropeado las cosas por completo. ¿Alguien podría aconsejarme?
Respuestas:
Necesita instalar el
gcc-multilib
paquete que trae encabezados específicos de 32 bits a su sistema operativo de 64 bits.fuente
Esto funciona bien para mí, en una nueva instalación onírica.
/usr/include/x86_64-linux-gnu/bits/predefs.h
es proporcionado por el paquete libc6-dev, ¿tal vez eso no está instalado correctamente?Puede "reinstalar" ese paquete con:
Sin embargo, si ese archivo está presente, entonces parece que la ruta de búsqueda de su compilador no está buscando el archivo en el lugar correcto. Puede verificar ejecutando lo siguiente:
que debe imprimir la ruta de búsqueda para incluir archivos. El mío dice:
Si eso no es lo mismo, diría que hay una discrepancia de versión entre algunos de sus paquetes esenciales de compilación. Comprueba que tienes las versiones correctas de los paquetes gcc y libc6-dev. En este momento en oneiric, estos deberían ser:
fuente
Tuve el mismo problema con mi compilador avr-gcc.
Enlacé los archivos y carpetas en / usr / include / i386-linux-gnu / a una carpeta en la que avr-gcc busca -files. Por ejemplo: / usr / lib / avr / include /
Quizás algo similar funcione para gcc. A
fuente