Как пример:
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 бита.
Это хорошо работает для меня на новой сновещательной установке. /usr/include/x86_64-linux-gnu/bits/predefs.h
обеспечивается libc6-dev пакетом, возможно, который не установлен правильно?
Можно "переустановить" тот пакет с:
sudo apt-get install --reinstall libc6-dev
Однако, если тот файл присутствует, то похоже, что путь поиска Вашего компилятора не смотрит в правильном месте для того файла. Можно проверить выполнение следующего:
gcc --verbose -o hello hello.c
который должен распечатать путь поиска для, включают файлы. Мой говорит:
#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
Если бы это не то же, я сказал бы, что существует несоответствие версии между некоторыми Вашими существенными для сборки пакетами. Проверьте, что у Вас есть правильные версии gcc и libc6-dev пакеты. Прямо сейчас на сновещательном, они должны быть:
gcc 4:4.6.1-2ubuntu5
libc6-dev 2.13-20ubuntu5
У меня была та же проблема с моим avr-gcc компилятором.
Я связал файлы и папки в/usr/include/i386-linux-gnu/к папке, в которой avr-gcc ищет - файлы. Например:/usr/lib/avr/include/
ln -s /usr/include/i386-linux-gnu/* /usr/lib/avr/include/
Возможно, что-то подобные работы для gcc.Кому: