完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用 mbedtls 连接到 aws iot,但由于 mbedtls 缺少一些定义,我无法编译代码。
我使用的是 ESP8266_RTOS_SDK 1.5 中的原始 libmbedtls.a,我试图编辑 config.h,但这并不重要,我真的需要 mbedtls 的源代码来使用必要的配置重新编译它。 /root/esp-open-sdk/ESP8266_RTOS_SDK/lib/libmbedtls.a(ssl_tls.o):(.text.mbedtls_ssl_fetch_input 0x4):对“max_content_len”的未定义引用 这是正确的 config.h: #ifndef MBEDTLS_CONFIG_H #define MBEDTLS_CONFIG_H /* 系统支持 */ #define MBEDTLS_HAVE_ASM #define MBEDTLS_DEPRECATED_WARNING #define MBEDTLS_ENTROPY_HARDWARE_ALT #define MBEDTLS_NO_PLATFORM_ENTROPY /* mbed TLS 功能支持 */ #define MBEDTLS_ECP_DP_SECP256R1_ENABLED #define MBEDTLS_ECP_DP_SECP384R1_ENABLED #define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED #define MBEDTLS_SSL_PROTO_TLS1_2 /* 调试支持(可选)*/ // // /* mbed TLS 模块 */ #define MBEDTLS_AES_C #define MBEDTLS_ASN1_PARSE_C #define MBEDTLS_ASN1_WRITE_C #define MBEDTLS_BIGNUM_C #define MBEDTLS_CIPHER_C #define MBEDTLS_CTR_DRBG_C #define MBEDTLS_ECDH_C #define MBEDTLS_ECDSA_C #define MBEDTLS_ECP_C #define MBEDTLS_ENTROPY_C #define MBEDTLS_GCM_C #define MBEDTLS_MD_C #define MBEDTLS_NET_C #define MBEDTLS_OID_C #define MBEDTLS_PK_C #define MBEDTLS_PK_PARSE_C #define MBEDTLS_SHA256_C #define MBEDTLS_SHA512_C #define MBEDTLS_SSL_CLI_C #define MBEDTLS_SSL_SRV_C #define MBEDTLS_SSL_TLS_C #define MBEDTLS_X509_CRT_PARSE_C #define MBEDTLS_X509_USE_C /* 用于验证基于 RSA 的根 CA 证书(如果根 CA 证书是使用 ECC 签名的,则可选)*/ #define MBEDTLS_RSA_C #define MBEDTLS_SHA1_C #define MBEDTLS_PKCS1_V15 #define MBEDTLS_PKCS1_V21 /* 对于测试证书 */ #define MBEDTLS_BASE64_C #define MBEDTLS_CERTS_C #define MBEDTLS_PEM_PARSE_C /* 以牺牲 ROM 为代价节省 RAM */ #define MBEDTLS_AES_ROM_TABLES /* 通过根据我们的确切需求进行调整来节省 RAM */ #define MBEDTLS_ECP_MAX_BITS 384 #define MBEDTLS_MPI_MAX_SIZE 256 // 2048 bits /* 以牺牲速度为代价节省 RAM,参见 ecp.h */ #define MBEDTLS_ECP_WINDOW_SIZE 2 #define MBEDTLS_ECP_FIXED_POINT_OPtiM 0 /* 以牺牲某些 ROM 为代价的显着速度优势 */ #define MBEDTLS_ECP_NIST_OPTIM /* * You should adjust this to the exact number of sources you're using: default * is the "mbedtls_platform_entropy_poll" source, but you may want to add other ones. * Minimum is 2 for the entropy test suite. */ #define MBEDTLS_ENTROPY_MAX_SOURCES 2 /* 通过指定我们自己的密码套件列表来节省 ROM 和几个字节的 RAM */ #define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 /* * Save RAM at the expense of interoperability: do this only if you control * both ends of the connection! (See coments in "mbedtls/ssl.h".) * The minimum size here depends on the certificate chain used as well as the * typical size of records. */ #define MBEDTLS_SSL_MAX_CONTENT_LEN 4096 #include "mbedtls/check_config.h" #endif /* MBEDTLS_CONFIG_H */ 有什么想法吗? |
|
相关推荐
1个回答
|
|
从您提供的信息来看,您在使用 ESP8266_RTOS_SDK 1.5 中的原始 libmbedtls.a 时遇到了编译问题。这个问题可能是由于以下几个原因导致的:
1. **缺少定义**:您提到了 `max_content_len` 的未定义引用。这可能是因为您的配置文件 `config.h` 中没有定义这个宏,或者定义的位置不正确。 2. **配置文件不兼容**:您尝试编辑 `config.h`,但可能没有正确地配置所需的选项。确保您已经根据您的需求启用了所有必要的功能和模块。 3. **库版本不匹配**:您使用的 libmbedtls.a 可能与您的项目或 ESP8266_RTOS_SDK 版本不兼容。尝试更新 libmbedtls 到一个与您的项目兼容的版本。 4. **编译器/链接器问题**:可能是编译器或链接器设置不正确,导致无法正确链接到 libmbedtls.a。 为了解决这个问题,您可以尝试以下步骤: 1. **检查配置文件**:确保您的 `config.h` 文件包含了所有必要的定义,特别是与 AWS IoT 相关的功能。您可以从 mbed TLS 的官方文档或 GitHub 仓库中找到示例配置文件。 2. **获取源代码**:如果您需要重新编译 mbedtls,可以从其 GitHub 仓库(https://github.com/ARMmbed/mbedtls)获取最新的源代码。 3. **重新编译 mbedtls**:使用适当的编译器和设置重新编译 mbedtls。确保在编译过程中启用了所需的功能和模块。 4. **更新 ESP8266_RTOS_SDK**:如果您使用的是较旧的 SDK 版本,尝试更新到较新的版本,以确保与 libmbedtls 的兼容性。 5. **检查编译器/链接器设置**:确保您的编译器和链接器设置正确,以便正确链接到 libmbedtls.a。 6. **寻求帮助**:如果您仍然遇到问题,可以在 mbed TLS 的官方论坛或 GitHub 仓库中寻求帮助,或者在 ESP8266 社区中寻求支持。 希望这些建议能帮助您解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
1142 浏览 1 评论
578浏览 6评论
479浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
463浏览 5评论
464浏览 4评论
440浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:00 , Processed in 0.842419 second(s), Total 49, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号