在ubuntu下安装MQTT 服务

本文详细介绍了如何在Ubuntu22.4.4LTS64位系统中安装MQTT服务(包括mosquitto和客户端),以及使用systemctl管理服务的启动、停止和状态查询。

ubuntu系统版本22.4.4LTS amd64

在ubuntu系统下打开终端输入命令

## 安装MQTT 服务 
sudo apt-get install mosquitto mosquitto-clients

继续执行后系统就完成了安装并默认已启动服务

## 查看MQTT运行状态
systemctl status mosquitto

## 启动服务
systemctl start mosquitto

## 停止服务
systemctl stop mosquitto

Ubuntu安装 MQTT 的库,通常是指 **用于 C/C++ 开发的 MQTT 客户端库**,最常用的是 **`libmosquitto`** —— Eclipse Mosquitto 项目提供的官方 C 语言客户端库。 下面详细介绍如何在 Ubuntu 系统中安装和使用 MQTT 的 C 库进行开发。 --- ### ✅ 方法一:通过 `apt` 安装预编译的 MQTT 库(推荐初学者) ```bash # 1. 更新软件包列表 sudo apt update # 2. 安装 mosquitto 开发库(包含头文件和静态库) sudo apt install libmosquitto-dev # 3. (可选)安装运行时库(如果只需要运行程序) sudo apt install libmosquitto1 # 4. (可选)安装命令行工具(如 mosquitto_sub, mosquitto_pub) sudo apt install mosquitto-clients mosquitto ``` > 📌 安装完成后你就可以: > - 使用 `#include <mosquitto.h>` 编写 C 程序 > - 链接 `-lmosquitto` 进行编译 --- ### ✅ 方法二:从源码编译安装(获取最新版本) 如果你需要最新功能或修复 bug,可以从 GitHub 源码构建: ```bash # 1. 安装依赖 sudo apt install build-essential cmake openssl libssl-dev libc-ares-dev libcurl4-openssl-dev # 2. 克隆源码 git clone https://github.com/eclipse/mosquitto.git cd mosquitto # 3. 编译库 make lib sudo make install-lib # 4. 安装头文件 sudo cp lib/*.h /usr/local/include/ ``` > ⚠️ 注意:手动安装后需配置库路径: ```bash echo '/usr/local/lib' | sudo tee /etc/ld.so.conf.d/mosquitto.conf sudo ldconfig ``` --- ### ✅ 示例:编写一个简单的 MQTT 客户端(C语言) #### 创建文件 `mqtt_test.c` ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <mosquitto.h> // 回调函数:连接响应 void on_connect(struct mosquitto *mosq, void *obj, int reason_code) { printf("已连接到 MQTT 代理,返回码: %d\n", reason_code); mosquitto_subscribe(mosq, NULL, "test/topic", 0); // 订阅主题 } // 回调函数:收到消息 void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *msg) { printf("收到消息: %s = %s\n", msg->topic, (char *)msg->payload); } int main() { struct mosquitto *mosq; // 1. 初始化 Mosquittomosquitto_lib_init(); // 2. 创建客户端实例(client ID, clean session) mosq = mosquitto_new("c-client-test", true, NULL); if (!mosq) { fprintf(stderr, "创建客户端失败!\n"); mosquitto_lib_cleanup(); return -1; } // 3. 设置回调函数 mosquitto_on_connect_cb(mosq, on_connect); mosquitto_on_message_cb(mosq, on_message); // 4. 连接到本地 MQTT 代理(确保 mosquitto 服务已启动) int rc = mosquitto_connect(mosq, "localhost", 1883, 60); if (rc != 0) { fprintf(stderr, "连接失败: %s\n", mosquitto_strerror(rc)); mosquitto_destroy(mosq); mosquitto_lib_cleanup(); return -1; } // 5. 启动网络循环(阻塞) mosquitto_loop_forever(mosq, -1, 1); // 清理资源 mosquitto_destroy(mosq); mosquitto_lib_cleanup(); return 0; } ``` --- ### ✅ 编译并运行 ```bash # 编译(链接 -lmosquitto) gcc mqtt_test.c -lmosquitto -o mqtt_client # 运行(确保 mosquitto 服务正在运行) sudo systemctl start mosquitto # 执行客户端 ./mqtt_client ``` > 💡 测试发布一条消息看看是否能收到: ```bash mosquitto_pub -h localhost -t test/topic -m "Hello from terminal!" ``` 你应该会在程序输出中看到这条消息! --- ### ✅ 常见问题与解决 | 问题 | 原因 | 解决方法 | |------|------|---------| | `fatal error: mosquitto.h: No such file or directory` | 未安装 `libmosquitto-dev` | 运行 `sudo apt install libmosquitto-dev` | | `undefined reference to 'mosquitto_new'` | 编译时未链接 `-lmosquitto` | 加上 `-lmosquitto` 参数 | | `Error: Connection refused` | MQTT 代理未运行 | 启动服务:`sudo systemctl start mosquitto` | | `libmosquitto.so.1: cannot open shared object file` | 动态库路径未注册 | 执行 `sudo ldconfig` | --- ### ✅ 总结 | 目标 | 命令 | |------|------| | 安装 MQTT C 客户端开发库 | `sudo apt install libmosquitto-dev` | | 安装命令行工具 | `sudo apt install mosquitto-clients` | | 编译程序 | `gcc xxx.c -lmosquitto -o app` | | 启动 MQTT 服务 | `sudo systemctl start mosquitto` | 你现在可以在 Ubuntu 上用 C 语言开发完整的 MQTT 客户端应用了! ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值