乐鑫技术交流
直播中

李慎梓

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

ESP-IDF3.5移植了simple_ota_example,编译后出现报错的原因?

App "sample_project" version: d477290-dirty
LD build/sample_project.elf
/root/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /nfsroot/esp32/idfproj-beta/build/ota/libota.a(local_ota.o):(.literal.user_parse_json+0x64): undefined reference to `_binary_ca_cert_pem_start'
collect2: error: ld returned 1 exit status
/nfsroot/esp-idf-v4.3/make/project.mk:563: recipe for target '/nfsroot/esp32/idfproj-beta/build/sample_project.elf' failed
make: *** [/nfsroot/esp32/idfproj-beta/build/sample_project.elf] Error 1

ESP-IDF3.5我在自己的程序上移植了simple_ota_example,编译后发现以上错误,好像是_binary_ca_cert_pem_start未定义什么的,但是去掉esp_https_ota函数就行编译成功,麻烦看下什么问题,谢谢

回帖(1)

笔画张

2024-6-6 18:19:40
根据您提供的错误信息,这个问题是由于链接器在编译过程中找不到`_binary_ca_cert_pem_start`符号。这通常发生在以下几种情况:

1. **缺少依赖**:可能是因为您的项目缺少了必要的依赖库。在这种情况下,您需要确保您的项目包含了所有必要的库。

2. **路径问题**:可能是因为链接器无法找到包含`_binary_ca_cert_pem_start`符号的文件。请检查您的项目设置,确保所有必要的文件都已正确包含在编译过程中。

3. **版本不兼容**:您提到使用的是ESP-IDF 3.5版本,可能是因为这个版本与您的代码或库不完全兼容。您可以尝试升级或降级ESP-IDF版本,看看是否能解决问题。

4. **编译配置问题**:可能是因为您的编译配置不正确。请检查您的Makefile或CMakeLists.txt文件,确保所有必要的编译选项和标志都已正确设置。

5. **代码问题**:如果`_binary_ca_cert_pem_start`是您代码中的一部分,那么可能是因为您的代码中存在错误。请检查您的代码,确保所有必要的符号都已正确定义。

解决这个问题的步骤可能包括:

- 确保您的项目依赖项是最新的,并且与ESP-IDF 3.5版本兼容。
- 检查您的项目路径设置,确保所有必要的文件都被正确包含。
- 如果您在代码中使用了`_binary_ca_cert_pem_start`,请确保它在您的项目中被正确定义和引用。
- 如果问题仍然存在,您可以尝试在ESP-IDF的GitHub仓库中查找类似的问题或报告新的问题。

希望这些信息能帮助您解决问题。如果需要更多帮助,请提供更详细的项目设置和代码信息。
举报

更多回帖

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