Например:
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.
В предположении где-то по пути после попытки исправить сообщение об ошибке:
/ usr / bin / ld: невозможно найти crt1.o: такого файла или каталога нет
Я напортачил полностью. Может ли кто-нибудь, пожалуйста, посоветовать?
Ответы:
Вам необходимо установить
gcc-multilib
пакет, который доставит 32-битные заголовки в вашу 64-битную операционную систему.источник
Это отлично работает для меня, на новой установке Oneiric.
/usr/include/x86_64-linux-gnu/bits/predefs.h
предоставляется пакетом libc6-dev, возможно, он установлен неправильно?Вы можете «переустановить» этот пакет с помощью:
Однако, если этот файл присутствует, то похоже, что путь поиска вашего компилятора не находится в нужном месте для этого файла. Вы можете проверить, запустив следующее:
который должен напечатать путь поиска для включаемых файлов. Моя говорит:
Если это не то же самое, я бы сказал, что между некоторыми из ваших пакетов, необходимых для сборки, есть несоответствие версий. Убедитесь, что у вас есть правильные версии пакетов gcc и libc6-dev. Прямо сейчас на oneiric это должно быть:
источник
У меня была такая же проблема с моим компилятором avr-gcc.
Я связал файлы и папки в / usr / include / i386-linux-gnu / с папкой, в которой avr-gcc ищет -files. Например: / usr / lib / avr / include /
Может быть, что-то подобное работает для GCC. к
источник