完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以前在4.2 中可以成功编译,现在换到idf 4.4 后 找不到app_main ?
/../riscv32-esp-elf/bin/ld.exe: esp-idf/freertos/libfreertos.a(port_common.c.obj): in function `main_task': H:/Espressif/frameworks/esp-idf-v4.4/components/freertos/port/port_common.c:117: undefined reference to `app_main' 以下是 cmakelists set(SOURCES ./Src/main.cpp ./Src/ringbufferUart.cpp ./Src/app_tasks.cpp ./Src/md5.cpp ./Src/util.cpp ./Src/app_ble.c ./Src/SI522A_interface.c ./Src/SI522A_App.c ./Src/myspi.c) idf_component_register(SRCS ${SOURCES} INCLUDE_DIRS "." "Inc" REQUIRES freertos esp_common nvs_flash bt) 请问有人可以指点一下吗 |
|
相关推荐
1个回答
|
|
在 ESP-IDF v4.4 中,如果你在 CMakeLists.txt 文件中设置了 main.cpp,但是编译时仍然找不到 app_main 函数,可能是由于以下几个原因:
1. **CMakeLists.txt 文件格式问题**:请确保你的 CMakeLists.txt 文件格式正确,特别是在设置 SOURCES 时。你提供的代码片段中,SOURCES 的设置似乎有些问题,可能是因为空格和换行的使用不正确。正确的设置应该是这样的: ```cmake set(SOURCES "./Src/main.cpp" "./Src/ringbufferUart.cpp" ) ``` 2. **组件依赖问题**:确保你的项目依赖了正确的组件。在 CMakeLists.txt 文件中,使用 `idf_component_register` 函数来注册组件依赖。例如: ```cmake idf_component_register( SRCS "${SOURCES}" INCLUDE_DIRS "." ) ``` 3. **app_main 函数定义问题**:确保你的 main.cpp 文件中定义了 app_main 函数。这个函数是 ESP-IDF 启动时调用的入口函数。例如: ```cpp extern "C" void app_main(); void app_main() { // 你的代码 } ``` 4. **项目配置问题**:检查你的 ESP-IDF 项目配置,确保没有其他错误或遗漏。例如,检查 `sdkconfig` 文件和 `menuconfig` 设置。 5. **ESP-IDF 版本问题**:虽然你提到从 4.2 升级到 4.4,但请确保你使用的是正确的 ESP-IDF 版本。你可以通过以下命令来检查和更新 ESP-IDF: ```bash git -C $IDF_PATH pull ./install.sh ``` 6. **编译器/链接器问题**:如果以上步骤都无法解决问题,可能是编译器或链接器的问题。尝试清理项目并重新编译: ```bash idf.py clean idf.py build ``` 如果问题仍然存在,请提供更多的项目信息,例如 CMakeLists.txt 文件的完整内容,以便进一步分析问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
1140 浏览 1 评论
576浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
461浏览 5评论
462浏览 4评论
437浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:18 , Processed in 0.999821 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号