https://cloud.baidu.com/doc/IOT/IoTdownload.html#.E4.B8.8B.E8.BD.BDMQTT.E7.9B.B8.E5.85.B3
下载MQTT相关:
下载MQTT客户端代码示例
C代码示例:下载MQTT-c压缩包
//------------------------------------
MQTT-c编译过程记录:
编译流程大体按照MQTT-c文件夹的里头的"使用说明.txt"文件说明;
具体实践步骤如下:
1、下载开源代码 MQTT-c,注意,百度提供的库文件是基于X86平台的库文件,所以编译时需要用x64位的系统;
root@ubuntu:/home/linux/MQTT-c/lib# uname -a
Linux ubuntu 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Linux ---------->32位系统
root@Linux-host:/home/MQTT-c/lib# uname -a
Linux Linux-host 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 16:19:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux ---------->64位系统
root@ubuntu:/home/linux/MQTT-c/lib# file libpaho-mqtt3cs.so
libpaho-mqtt3cs.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0xa7509e4c0208dca4c2989364c72f1555f79a579f, not stripped
如果不注意库文件版本与平台版本不对应的问题,后面用make命令后出现了:
/usr/bin/ld: skipping incompatible......
/usr/bin/ld: cannot find -lpaho-mqtt3cs
的问题,导致编译失败;
2、下载百度mqtt服务的pom认证文件[https://cloud.baidu.com/doc/IOT/IoTdownload.html#.E4.B8.8B.E8.BD.BDTLS.E8.AE.A4.E8.AF.81.E6.96.87.E4.BB.B6],把该root_cert.pem文件放入MQTT-c中
3、进入MQTT-c目录,修改Makefile文件中的LIB_PATH和INCLUDE_PATH路劲如下[假设MQTT-c文件夹放在路径/home/]
LIB_PATH = /home/MQTT-c/lib
INCLUDE_PATH = /home/MQTT-c/include
执行:make all,生成2个可执行文件pub和sub的可执行文件[PublisherSync和SubscriberSync],见图“1.编译完成.jpg”;
查看得知该2个文件也为64位版本:
root@Linux-host:/home/MQTT-c# file PublisherSync
PublisherSync: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x43187a758edceca1cd399ecd77d70649aadede64, not stripped
root@Linux-host:/home/MQTT-c# file SubscriberSync
SubscriberSync: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xbce55aab0f1fad937a531480355586f57ed9a1f6, not stripped
4、把MQTT-c/lib文件夹中的libpaho-mqtt3cs.so.1文件复制到/usb/lib下,不然执行以上2个可执行文件会提示libpaho-mqtt3cs.so.1文件找不到,
直接执行2个可执行文件,检查可执行文件是否可运行,见“2.文件可执行测试[程序打印出参数说明].jpg”,
./PublisherSync
./SubscriberSync
5、使用如下参数格式的命令,进行具体测试命令[注意:要先sub才能pub]:
pub:./PublisherSync ssl://host:port topic message
sub:./SubscriberSync ssl://host:port topic
示例:
SubscriberSyn测试OK[跟百度物接入网页测试端配合]:
SubscriberSyn测试OK[跟百度物接入网页测试端配合]:
SubscriberSyn+PublisherSync同一台机子运行测试OK: