Raspberry Pi - фатальная ошибка: sys/cdefs.h: нет такого файла или каталога

Я пытаюсь скомпилировать gcc5.3.0 на своем Raspberry Pi с последним образом системы Raspbian.

$ ./configure --enbale-checking=release --enable-languages=c,c++,fortran --host=arm-cortexa7_neon-linux-gnueabihf --build=arm-cortexa7_neon-linux-gnueabihf --target=arm-cortexa7_neon-linux-gnueabihf
$ make

Однако исходный компилятор (gcc4.9) жалуется, что не нашел sys/cdefs.h при компиляции libgcc.

Я проверил, что у меня установлены libc6-dev и build-essential.

Поэтому я использовал grep -R 'cdefs' /usr/include/ для поиска и нашел его в /usr/include/bsd/. Я создал каталог sys и сделал жесткие ссылки на эти заголовки в /usr/include/bsd/sys.

На этот раз это дало мне более странную ошибку, /usr/include/stdio.h:312:8: error: unknown type name 'FILE'.

Я искал это в stackoverflow, и есть аналогичный вопрос, https://stackoverflow.com/a/21047237/5691005. Но когда я удалил /usr/include/sys и /usr/include/bsd, а затем переустановил libc6-dev, я не смог найти sys/cdefs.h в /usr/include, а компилятор все равно выдавал ошибки.

Я теперь совсем потерян. Любое предложение будет оценено.


person 0xBBC    schedule 06.03.2016    source источник
comment
Вам повезло с этим?   -  person Paulo Matos    schedule 02.06.2016
comment
Удачи с этим?   -  person Christian Stewart    schedule 11.07.2017


Ответы (2)


У меня была аналогичная проблема с компиляцией gcc-8.2. Я попытался сделать так, как описано здесь с переустановка:

sudo apt-get --reinstall install libc6 libc6-dev

После этого я нашел все недостающие заголовки:

find / -name cdefs.h 

и копирование их в /usr/include: эти шаги позволили только двигаться вперед, но мне так и не удалось полностью собрать gcc.

Лучшее решение, которое я нашел, это загрузить скомпилированную версию gcc-8.1 с: https://solarianprogrammer.com/2017/12/07/raspberry-pi-raspbian-compiling-gcc/

person baziorek    schedule 12.01.2019

Я также столкнулся с этой проблемой при создании контейнерной среды сборки для кросс-компилируемых приложений Qt для raspberry pi 4.

Я обнаружил, что мне нужно отредактировать mkspec для устройства linux-rasp-pi4-v3d и добавить еще один cflag, чтобы gcc мог найти заголовок из моего системного корня Raspi, который использовался для кросс-компиляции Qt.

В частности, под qtbase/mkspecs/devices/linux-rasp-pi4-v3d-g++/qmake.conf:

QMAKE_CFLAGS            = -march=armv8-a -mtune=cortex-a72 -mfpu=crypto-neon-fp-armv8 -I$$[QT_SYSROOT]/usr/include/arm-linux-gnueabihf
person NaterGator    schedule 29.04.2021