当 esp32 组件 #includes esp_types.h 在 newlib/ 而不是 esp32/ 中找到时,esp-idf build flash 失败

esp-idf build flash fails when esp32 when component #includes esp_types.h found in newlib/ not esp32/

在 Mac osX 我遵循了 getting started guide 并且无法通过 hello_world 示例项目中的 make flash

我使用的所有代码都是直接从这个 repo 克隆的:https://github.com/espressif/esp-idf

我从 ~/esp/hello_world/ 中的 hello_world 示例副本执行 make clean(有效)和 make flash,并且 make flash 给出了这个致命错误:

In file included from /Users/me/esp/esp-idf/components/esp_rom/include/esp32/rom/uart.h:18:0,
  from /Users/me/esp/esp-idf/components/bootloader_support/src/bootloader_clock.c:14:
/Users/me/esp/esp-idf/components/esp_common/include/esp_types.h:19:23:fatal error: sys/cdefs.h: No such file or directory
compilation terminated.

esp-idf/components/esp_common/include/esp_types.h 中的违规行是:#include <sys/cdefs.h>

中有一个文件

.../esp-idf/components/newlib/include/sys/cdefs.h 但不在 .../esp-idf/components/esp32/include/sys/cdefs.h

我已经通过创建软 link:

确认这是问题所在
cd ~/esp/esp-idf/components/esp32/include
ln -s ~/esp/esp-idf/components/newlib/include/sys sys

之后构建会转到下一个类似的问题

esp32/include/sys/cdefs.h:43:36: fatal error: machine/_default_types.h: No such file or directory

我研究了几个选项来将 newlib/include 目录添加到搜索#include 指令的系统目录列表中,包括向命令行添加 -I 选项,但我无法解决'proper' 方法,因为我不想修改存储库中的任何文件 https://github.com/espressif/esp-idf

我希望这是显而易见的。自从我在 Uni 以来,我就没有处理过 make 文件,我觉得我可能不得不使用 long int 来存储那是多少年前的事情。

您链接到的入门指南版本指示您使用名为 idf.py 的 Python 脚本来配置、构建和刷新 esp32 项目(在安装框架和支持工具)。该指南没有任何地方直接描述 运行 make,尽管它似乎可能构成对早期版本的更改。

尽管似乎还有其他选择,但最直接的方法是遵循指南并使用 idf.py 描述的脚本。