乐鑫技术交流
直播中

陆军航空兵

8年用户 802经验值
私信 关注
[问答]

Eclipse挂载aws代码出现错误的原因?怎么解决?

硬件部分:esp32-s3 –wroom-1
软件部分: esp-idf-v4.4.2
开发环境:Wondows 7
IDE:  Eclipse IDE for C/C++ Developers Version: 2022-06 (4.24.0)

问题描述:
原本在keil c mdk 用AT command开发蛮顺手的,但后来转到IDF确让我挫折满满,编译后出现一堆问题,在网上没有找当我想找的答案,虚心求教一下

出现问题描述:
undefined reference to `app_main'
undefined reference to `app_main'
Symbol 'NULL' could not be resolved
Symbol 'ESP_ERR_NVS_NO_FREE_PAGES' could not be resolved
Symbol 'ESP_ERR_NVS_NEW_VERSION_FOUND' could not be resolved
esp-idf/freertos/libfreertos.a(port_common.c.obj): in function `main_task':

设定步骤
1.        开启idf 专案
2.        挂载 https://github.com/espressif/esp-aws-iot 项目内容(esp-aws-iot-masterexampleshttp)透过import -> file system 方式把*.c
        *.h挂载进来
3.        Cmakelist.txt不知道该如何修改

                                                                                                                                               
                                                                                                      
CMakeList.txt
1.
set(COMPONENT_SRCS
    "app_main.c"
    "http_demo_mutual_auth.c"
    "http_demo_utils.c"
    )

set(COMPONENT_ADD_INCLUDEDIRS
    "."
    "${CMAKE_CURRENT_LIST_DIR}"
    )

idf_component_register(SRCS "${COMPONENT_SRCS}"
                       INCLUDE_DIRS ${COMPONENT_ADD_INCLUDEDIRS}
                      )


2.
# The following five lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)

set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/examples/common_components/protocol_examples_common"
                                                 "${CMAKE_CURRENT_LIST_DIR}/../../../libraries/coreHTTP"
                                                 "${CMAKE_CURRENT_LIST_DIR}/../../../libraries/backoffAlgorithm"
                                                 "${CMAKE_CURRENT_LIST_DIR}/../../../libraries/common/posix_compat"
        )

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(http_mutual_auth)

target_add_binary_data(${CMAKE_PROJECT_NAME}.elf "main/certs/root_cert_auth.pem" TEXT)
target_add_binary_data(${CMAKE_PROJECT_NAME}.elf "main/certs/client.crt" TEXT)
target_add_binary_data(${CMAKE_PROJECT_NAME}.elf "main/certs/client.key" TEXT)

3.
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
get_filename_component(ProjectId ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(${ProjectId})
                                                                                                                                                                     

回帖(1)

尚文清

2024-6-14 16:52:07
根据您提供的信息,您在使用Eclipse IDE for C/C++ Developers (2022-06, 4.24.0) 和 ESP-IDF v4.4.2 进行ESP32-S3开发时遇到了编译错误。以下是一些建议来解决这些问题:

1. 确保您的项目配置正确:
   - 检查项目中的 `sdkconfig` 文件是否已正确生成。如果没有,请运行 `idf.py menuconfig` 来生成配置文件。
   - 确保 `CMakeLists.txt` 文件中的组件和源文件路径正确。

2. 检查 `app_main` 函数:
   - 确保您的项目中有 `app_main` 函数,它应该是 `void app_main(void)` 的形式。这是ESP-IDF应用程序的入口点。

3. 检查 `NULL` 符号问题:
   - 确保您没有在代码中使用 `NULL` 宏。在C++中,应该使用 `nullptr`。

4. 检查 `ESP_ERR_NVS_NO_FREE_PAGES` 错误:
   - 这个错误通常与NVS(非易失性存储)有关。请确保您的项目中使用了正确的NVS分区,并在 `menuconfig` 中配置了适当的分区大小。

5. 更新ESP-IDF和Eclipse插件:
   - 确保您使用的是最新版本的ESP-IDF和Eclipse插件。有时,旧版本的软件可能存在兼容性问题。

6. 清理并重新编译项目:
   - 在Eclipse中,尝试清理项目(Project -> Clean...),然后重新编译。

7. 检查Eclipse设置:
   - 确保Eclipse的C/C++设置正确,包括编译器、链接器和其他工具链设置。

8. 查看错误日志和输出:
   - 仔细阅读Eclipse的错误日志和输出,以获取更多关于错误的详细信息。


举报

更多回帖

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