乐鑫技术交流
直播中

刘玉兰

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

ESP8266_RTOS_SDK LWIP构建失败怎么解决?

我决定尝试最新发布的ESP8266_RTOS_SDK。我安装了最新的工具链:

    xtensa-lx106-elf-macos-1.22.0-100-ge567ec7-5.2.0.tar.gz


然后我克隆了 ESP8266_RTOS_SDK 的 release/v3.3 分支。这导致我的项目生成失败,并出现以下情况:

抄送构建/lwip/lwip/src/api/if_api.o
在 /Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/api/if_api.c:49:0 包含的文件中:
/Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/include/lwip/priv/sockets_priv.h:105:0: warning: "LWIP_SETGETSOCKOPT_MAXOPTLEN" redefined
#define LWIP_SETGETSOCKOPT_MAXOPTLEN LWIP_MAX(16, sizeof(struct ifreq))
^
在 /Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/include/lwip/priv/sockets_priv.h:45:0 包含的文件中,
                 from /Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/api/if_api.c:49:
/Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/include/lwip/sockets.h:115:0:注意:这是上一个定义的位置
#define LWIP_SETGETSOCKOPT_MAXOPTLEN 16
^
在 /Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/api/if_api.c:49:0 包含的文件中:
/Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/include/lwip/priv/sockets_priv.h:109:8:错误:重新定义“struct lwip_setgetsockopt_data”
struct lwip_setgetsockopt_data {
        ^
在 /Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/include/lwip/priv/sockets_priv.h:45:0 包含的文件中,
                 from /Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/api/if_api.c:49:
/Users/卡马林/esp/ESP8266_RTOS_SDK/components/lwip/lwip/src/include/lwip/sockets.h:119:8:注意:最初定义在这里
struct lwip_setgetsockopt_data {
        ^
cc1:警告:无法识别的命令行选项“-Wno-frame-address”
make[1]: *** [/Users/卡马林/esp/ESP8266_RTOS_SDK/make/component_wrapper.mk:292: lwip/src/api/if_api.o] Error 1
make: *** [/Users/卡马林/esp/ESP8266_RTOS_SDK/make/project.mk:571: component-lwip-build] Error 2



因此,我回到了示例并尝试构建:

    ESP8266_RTOS_SDK/examples/get-started/hello_world


并得到同样的错误。似乎包含具有相同定义的两个不同标头存在一些冲突。有人见过这个吗?对于hello_world示例,我首先使用所有默认值运行“make menuconfig”。
                  

回帖(1)

bigbangboom

2024-7-9 16:13:29
为了解决这个问题,请按照以下步骤操作:

1. 确认您的环境设置正确:确保您已经安装了正确的工具链(xtensa-lx106-elf-macos-1.22.0-100-ge567ec7-5.2.0.tar.gz)和 ESP8266_RTOS_SDK 的 release/v3.3 分支。

2. 清理构建:在构建项目之前,先尝试清理之前的构建文件。在项目的根目录下,执行以下命令:
   ```
   make clean
   ```

3. 检查 lwip 配置:检查 lwip 配置文件(通常位于 components/lwip/include/lwipopts.h),确保所有必要的配置项都已正确设置。

4. 更新 lwip 源代码:尝试从 lwip 官方仓库获取最新的 lwip 源代码,然后替换 ESP8266_RTOS_SDK 中的 lwip 目录。这可以通过以下命令完成:
   ```
   git clone https://github.com/lwip-tcpip/lwip.git
   cp -r lwip/src/* /path/to/ESP8266_RTOS_SDK/components/lwip/lwip/src/
   ```

5. 重新构建项目:在项目的根目录下,执行以下命令重新构建项目:
   ```
   make
   ```

6. 如果问题仍然存在,请检查错误和警告信息,以便找到具体的问题所在。在您提供的错误信息中,有一个警告:
   ```
   warning: "LWIP_SETGETSOCKOPT_MAXOPT"
   ```
   这可能是由于 LWIP 配置文件中的宏定义问题。检查 lwipopts.h 文件,确保 LWIP_SETGETSOCKOPT_MAXOPT 宏定义正确。


举报

更多回帖

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