升级到RTOS SDK v1.5版本编译出现的问题

sdylion
Posts: 9
Joined: Thu Sep 24, 2015 11:15 am

升级到RTOS SDK v1.5版本编译出现的问题

Postby sdylion » Fri Nov 18, 2016 1:27 pm

hi,
准备升级到RTOS SDK v1.5版本,在进行工程编译的时候出现问题,cJSON.c使用了floor和pow两个方法,并且该文件#include <math.h>,但在链接的时候库中找不到这两个方法的定义,出现的错误如下:
/home/esp8266/Share/esp_iot_rtos_sdk-master/lib/libjson.a(cJSON.o):(.text.print_number+0x38):undefined reference to 'floor'
/home/esp8266/Share/esp_iot_rtos_sdk-master/lib/libjson.a(cJSON.o):(.text.print_number+0x10):undefined reference to 'pow'
这样类似的错误。RTOS SDK v1.4版本也有这样的问题。但在旧的JSON版本中没有使用floor和pow这两个方法,所以没有出现问题。

请问如何解决这个问题?
'

ESP_Xutao
Posts: 134
Joined: Tue Sep 27, 2016 5:42 pm

Re: 升级到RTOS SDK v1.5版本编译出现的问题

Postby ESP_Xutao » Fri Nov 25, 2016 11:23 am

你好:
这个主要是在前版本的esp8266_iot_platform对现在的RTOS V1.5缺少了C库,主要在Makefile中修改一下,将Makefile中的-lminic替换成-lcirom和-lmirom,还有在esp8266_iot_platform中的user_main.c加入32 user_rf_cal_sector_set()函数,我们的官网esp8266_iot_platform已有更新的。
uint32 user_rf_cal_sector_set(void)
{
flash_size_map size_map = system_get_flash_size_map();
uint32 rf_cal_sec = 0;

switch (size_map) {
case FLASH_SIZE_4M_MAP_256_256:
rf_cal_sec = 128 - 5;
break;

case FLASH_SIZE_8M_MAP_512_512:
rf_cal_sec = 256 - 5;
break;

case FLASH_SIZE_16M_MAP_512_512:
case FLASH_SIZE_16M_MAP_1024_1024:
rf_cal_sec = 512 - 5;
break;

case FLASH_SIZE_32M_MAP_512_512:
case FLASH_SIZE_32M_MAP_1024_1024:
rf_cal_sec = 1024 - 5;
break;

default:
rf_cal_sec = 0;
break;
}

return rf_cal_sec;
}
谢谢对ESP8266的关注。

Who is online

Users browsing this forum: No registered users and 58 guests