Paho.Mqtt.c在windwos上移植

本文详细介绍了在Windows环境下移植Paho MQTT C库的步骤,包括下载C源码、OpenSSL、cmake工具,以及配置和构建过程。适用于希望在Windows平台使用MQTT协议进行物联网开发的读者。

 

首先推荐几篇好的文章:

 

A.移植C库:http://www.brixbot.com/coding/mqtt-04-build-paho-c-for-windows/

B.移植C++库:https://blog.youkuaiyun.com/daiyunxing0545/article/details/88059386

 

1. 下载C源码

https://github.com/eclipse/paho.mqtt.c

2. 下载OpenSSL

https://slproweb.com/products/Win32OpenSSL.html

我的电脑是64位,下载的是这个:Win64 OpenSSL v1.0.2u

3. 下载安装cmake工具

https://blog.youkuaiyun.com/dabenxiong666/article/details/53998998

4. 解压1中的源码,在其内部新建一个build-2015目录,运行cmake工具

5. 点击4中的Open Project按钮,打开工程

 

以下是在 hi3516 上移植 paho.mqtt.c 库的方法: #### 1. 准备交叉编译环境 确保已经搭建好针对 Hi3516 的交叉编译环境,获取对应的交叉编译工具链,如 `arm-hisivxxx-linux-gcc`。 #### 2. 下载 paho.mqtt.c 库源码 从 paho.mqtt.c 的官方仓库下载源码: ```bash git clone https://github.com/eclipse/paho.mqtt.c.git cd paho.mqtt.c ``` #### 3. 修改 Makefile 参考示例中修改 Makefile 的方式,设置交叉编译工具和目标平台相关的配置。例如: ```makefile CC = arm-hisivxxx-linux-gcc CXX = arm-hisivxxx-linux-g++ ``` 如果 paho.mqtt.c 库依赖其他库(如 openssl),还需要像示例中那样修改 Makefile 增加相关库的路径: ```makefile ifndef prefix prefix = /home/tieren/download_lib/pahomqtt endif # 把 anl 库注释调 #GAI_LIB = -lanl # 增加 openssl 的路径 CCFLAGS_SO += -I /home/tieren/download_lib/openssl/include LDFLAGS_C += -Wl,-soname,lib$(MQTTLIB_C).so.${MAJOR_VERSION} -L /home/tieren/download_lib/openssl/lib LDFLAGS_CS += -Wl,-soname,lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -Wl,-no-whole-archive -L /home/tieren/download_lib/openssl/lib LDFLAGS_A += -Wl,-soname,lib${MQTTLIB_A}.so.${MAJOR_VERSION} -L /home/tieren/download_lib/openssl/lib LDFLAGS_AS += -Wl,-soname,lib${MQTTLIB_AS}.so.${MAJOR_VERSION} -Wl,-no-whole-archive -L /home/tieren/download_lib/openssl/lib ``` #### 4. 编译 paho.mqtt.c 库 执行 `make` 命令来编译库: ```bash make ``` #### 5. 安装 paho.mqtt.c 库 编译成功之后,将生成的库文件和头文件复制到 Hi3516 开发板的目标路径: ```bash make install DESTDIR=/path/to/your/target/rootfs ``` #### 6. 测试 paho.mqtt.c 库 编写一个简单的 MQTT 测试程序,使用交叉编译工具进行编译和运行,以此验证 paho.mqtt.c 库是否移植成功。示例代码如下: ```c #include <stdio.h> #include "MQTTClient.h" #define ADDRESS "tcp://localhost:1883" #define CLIENTID "ExampleClientPub" #define TOPIC "test/topic" #define PAYLOAD "Hello, MQTT!" #define QOS 1 #define TIMEOUT 10000L int main(int argc, char* argv[]) { MQTTClient client; MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; MQTTClient_message pubmsg = MQTTClient_message_initializer; int rc; MQTTClient_create(&client, ADDRESS, CLIENTID, MQTTCLIENT_PERSISTENCE_NONE, NULL); conn_opts.keepAliveInterval = 20; conn_opts.cleansession = 1; if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) { printf("Failed to connect, return code %d\n", rc); return rc; } pubmsg.payload = PAYLOAD; pubmsg.payloadlen = strlen(PAYLOAD); pubmsg.qos = QOS; pubmsg.retained = 0; MQTTClient_deliveryToken token; MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token); rc = MQTTClient_waitForCompletion(client, token, TIMEOUT); printf("Message with delivery token %d delivered\n", token); MQTTClient_disconnect(client, 10000); MQTTClient_destroy(&client); return rc; } ``` 使用交叉编译工具编译该测试程序: ```bash arm-hisivxxx-linux-gcc -o mqtt_test mqtt_test.c -lpaho-mqtt3c ``` 将生成的可执行文件复制到 Hi3516 开发板上运行: ```bash ./mqtt_test ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值