本想实践亚马逊aws的接入方案,由于亚马逊aws个人账户需要VISA信用卡,所以先用阿里云实践学习,以后有机会再接入aws。
1. 申请一个阿里云账户,需要绑定支付宝账户,阿里云个人账户可以申请部分业务免费,而且基础版每个月前100w条消息传输免费,个人用来学习实践绰绰有余。
2.根据阿里云物联网平台的帮助文档进行服务器端配置,这里不再赘述,帮助文档网址。
3. 重点说一下遇到的坑,由于阿里云的设备端sdk一直在更新功能,然而官网和github上的帮助文档没有随之更新,所以直接按照文档编译sdk的example会出现编译错误,
错误显示为undefined reference to `IOT_CMP_Init‘等等,表示为该函数并未定义,通过查看源代码,确实只有函数声明,没有函数定义,
在反复查看教程和确认文件完整性后,通过查看阿里云C语言SDK说明得到了启发,是不是需要在make.settings文件中修改部分配置,再看了sdk的版本更新说明就更加确信了这一点,更新说明如图
所以修改make.settings文件的配置,具体是将FEATURE_CMP_ENABLED,FEATURE_DM_ENABLED,FEATURE_SERVICE_OTA_ENABLED三个选项配置为n。配置后如下:
FEATURE_MQTT_COMM_ENABLED = y FEATURE_MQTT_DIRECT = y FEATURE_MQTT_DIRECT_NOTLS = n FEATURE_MQTT_DIRECT_NOITLS = y FEATURE_COAP_COMM_ENABLED = n FEATURE_HTTP_COMM_ENABLED = y FEATURE_SUBDEVICE_ENABLED = n FEATURE_CMP_ENABLED = n FEATURE_DM_ENABLED = n FEATURE_SERVICE_OTA_ENABLED = n
然后再执行命令,重新编译通过。
make distclean make
接下来再按照官方教程执行可执行文件,服务器端设备信息由未激活变为离线,即可在服务器端的日志服务中看见设备已经上线。
树莓派3B+实践(2)- 阿里云物联网平台接入(设备端C语言SDK编译)解决undefined reference to `IOT_CMP_Init'错误
原文:https://www.cnblogs.com/vitch/p/9502818.html