Raspberry Pi -fatal错误:sys / cdefs.h:没有这样的文件或目录

时间:2016-03-06 02:26:35

标签: raspberry-pi2 libgcc gcc5

我尝试使用最新的Raspbian系统映像在我的Raspberry Pi上编译gcc5.3.0。

$ ./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)抱怨在编译libgcc时没有创建sys / cdefs.h。

我检查了我安装了libc6-devbuild-essential

所以我使用grep -R 'cdefs' /usr/include/来搜索它,我在/ usr / include / bsd /找到它。我创建了sys目录,并在/ usr / include / bsd / sys。

下创建了这些头文件的硬链接

这次它给了我一个更奇怪的错误, /usr/include/stdio.h:312:8:错误:未知类型名称'文件'。

我在stackoverflow上搜索了这个,并且有一个类似的问题https://stackoverflow.com/a/21047237/5691005。但是当我删除/ usr / include / sys和/ usr / include / bsd,然后重新安装libc6-dev时,我在/ usr / include下找不到sys / cdefs.h,编译器仍然给出错误。

我现在完全迷失了。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

我在编译gcc-8.2时遇到类似的问题。我尝试按照here的说明进行重新安装:

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/

答案 1 :(得分:0)

我在为 raspberry pi 4 的交叉编译 Qt 应用程序创建容器化构建环境时也遇到了这个问题。

我发现我需要编辑 linux-rasp-pi4-v3d 设备的 mkspec 并添加另一个 cflag,以便 gcc 可以从我的 Raspi sysroot 中找到用于交叉编译 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