乐鑫技术交流
直播中

李进锋

7年用户 909经验值
私信 关注
[问答]

open sdk中的c_types.h错误怎么解决?

我正在尝试安装 esp-open-sdk 并独立编译它以编译 Web 服务器固件。因此,遵循(官方?)来自wiki/doku.php?id=toolchain 的文档
代码:全选git clone --recursive https://github.com/pfalcon/esp-open-sdk
cd esp-open-sdk
make STANDALONE=y


添加到路径等。
然后,我下载 Web 服务器代码并尝试立即编译它:
代码:全选git clone "https://github.com/dubaurazvan/esp8266-wireless-switcher.git"
cd esp8266-wireless-switcher
make


然后我得到无数错误,都与此类似:
代码:全选CC user/stdout.c
In file included from include/espmissingincludes.h:4:0,
                 from user/stdout.c:13:
/home/amadeus/esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot/usr/include/ets_sys.h:14:1: error: unknown type name 'uint32_t'
typedef uint32_t ETSSignal;


所以我查看了 ets_sys.h 文件,前几行是
代码:全选/*
* copyright (c) 2008 - 2011 Espressif System
*
* Define user specified Event signals and Task priorities here
*
*/

#ifndef _ETS_SYS_H
#define _ETS_SYS_H

#include "c_types.h"
#include "eagle_soc.h"

typedef uint32_t ETSSignal;
typedef uint32_t ETSParam;



它使用 uint32_t,我猜它应该在同一目录的 c_types.h 中定义。然后我看看 c_types.h 和
代码:全选/*
*  Copyright (c) 2010 - 2011 Espressif System
*
*/

#ifndef _C_TYPES_H_
#define _C_TYPES_H_

#include
#include
#if 0
typedef unsigned char       uint8_t;
typedef signed char         sint8_t;
typedef signed char         int8_t;
typedef unsigned short      uint16_t;
typedef signed short        sint16_t;
typedef signed short        int16_t;
typedef unsigned long       uint32_t;
typedef signed long         sint32_t;
typedef signed long         int32_t;
typedef signed long long    sint64_t;
typedef unsigned long long  uint64_t;
typedef unsigned long long  u_int64_t;
typedef float               real32_t;
typedef double              real64_t;
#endif


等等,果然,uint32_t 没有定义,因为#if 0 指令。在 esp-open-sdk(sdk 的根目录)中,我有一个 c_types-c99.patch 正是这样做的,它用 #if 0 / #endif 包围了 c_types.h 中的 typedef。
那么这是怎么回事呢?我也许可以在没有 c_types-c99 补丁的情况下以某种方式重新编译 sdk,但我敢打赌这会破坏其他东西。有任何想法吗?
我在 64 位 Fedora 22 机器上执行此操作。

回帖(1)

李鸿洋

2024-6-3 17:08:24
针对这个错误,您可以尝试以下几个步骤:

1.检查您的ESP-Open-SDK版本是否是最新的,如果不是,请更新。

2.确认您的编译环境是否正确设置。可以参考这篇文章:https://github.com/pfalcon/esp-open-sdk#prerequisites 进行设置。

3.确保所有必需的库和依赖项已正确安装。

4.尝试重新克隆您的esp8266-wireless-switcher 子模块,有时下载的文件可能会损坏。

5.在编译之前,可以清除项目,以确保在编译过程中不会发生错误。

6.如果您使用了其他ESP-Open-SDK版本,请尝试使用与该版本匹配的Web服务器代码。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分