我尝试将库mbedTLS与LwIP 2.1.0集成。我已经在我的lwipopts.h文件中添加了以下内容
#ifndef LWIP_ALTCP
#define LWIP_ALTCP 1
#endif
#ifndef LWIP_ALTCP_TLS
#define LWIP_ALTCP_TLS 1
#endif
我已经像这样将库添加到我的项目中,并为编译器引用了它们:
我还对mbedtls / include / config.h文件进行了更改,以便不使用Windows或Linux。
我得到了对“ _gettimeofday”的“未定义引用”,在这里我将其范围缩小到唯一定义该位置的地方是在我的arm-gnu工具链中:
#ifdef _COMPILING_NEWLIB
int _EXFUN(_gettimeofday, (struct timeval *__p, void *__tz));
#endif
可能是什么情况?当我关闭LWIP_ALTCP_TLS时,所有内容都会编译文件,但是TLS无法使用。我还需要打开/关闭更多标志吗?
答案 0 :(得分:1)
RTFM:_gettimeofday()
函数是系统调用,使用newlib中的日期和时间函数时,用户必须实现该函数。
最小的实现很简单:
int _gettimeofday (struct timeval *tp, void *tzp){
tp->tv_sec = unixTimeInSecs;
tp->tv_usec = 0;
return 0;
}
TLS库需要当前时间进行证书检查:SSL证书仅在特定日期范围内有效。