概述
操作系统: Ubuntu 16.4 64位
Openssl: openssl-1.1.1d.tar
mqtt库: paho.mqtt.c-1.3.5.tar
测试例子: mqtts-c-demo (OneNET提供)
OneNET提供的mqtts-c-demo例子需要用到openssl和paho.mqtt.c, 首先我们需要将这两个编译好。
OpenSSL编译:
新建opensslgcc目录,解压openssl-1.1.1d.tar,进入openssl-1.1.1d目录,执行下面命令,把openssl编译到opensslgcc目录下:
./config --prefix=/home/alientek/jf-imx6-source/mqttgcc/opensslgcc -fPIC no-shared no-asm
--prefix 表示自定义安装路径,如果想安装在默认路径下,可以不使用这个参数;
-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code), 则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的;
no-shared 表示不生成动态库,只生成静态库,如果想生成动态库使用shared参数(默认应该也是动态库)。
no-asm 表示:Do not use assembler code
make -j16
make install
编译成功后可以在opensslgcc目录下看到下面文件:
paho.mqtt.c-1.3.5编译:
解压paho.mqtt.c-1.3.5,进入paho.mqtt.c-1.3.5目录,新建mqtt_openssl和mqtt_build目录。将上面编译好的opensslgcc目录所有文件复制到mqtt_openssl目录上,后面cmake引用。
进入mqtt_openssl目录,执行复制命令:
cp -r -d /home/alientek/jf-imx6-source/mqttgcc/opensslgcc ./
执行命令:
cmake -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR=/home/alientek/jf-imx6-source/mqttgcc/paho.mqtt.c-1.3.5/mqtt_openssl/opensslgcc -DCMAKE_INSTALL_PREFIX=/home/alientek/jf-imx6-source/mqttgcc/paho.mqtt.c-1.3.5/mqtt_build -DPAHO_BUILD_STATIC=TRUE
make -j16
make install
编译完成后的文件在mqtt_build目录中。
mqtts-c-demo编译:
解压mqtts-c-demo.zip unzip mqtts-c-demo.zip
修改mqtts-sample.c文件:
将上面的pid,device_name,key 修改成自己在OneNET平台的设备
在执行cmake命令前,需要修改一下CMakeLists文件,否则会出错:
执行 cmake .
make clean
make
编译通过后在当前目录生成 mqtts-sample实例程序
./mqtts-sample 运行
成功连接后的样子。 若要退出循环程序,ctrl+c
OneNET控制台收到的数据流。
最后
以上就是温暖白猫为你收集整理的Ubuntu系统下测试OneNet平台 MQTTS协议的全部内容,希望文章能够帮你解决Ubuntu系统下测试OneNet平台 MQTTS协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复