Mosquitto是一個開源的MQTT消息代理(broker)軟件,它遵循MQTT協議,允許設備之間高效交換消息。作為一個輕量級的消息中間件,Mosquitto支持QoS(服務質量)等級,支持發布/訂閱模式,適用于嵌入式系統和低功耗設備。其小巧的體積和簡潔的架構使其成為許多嵌入式應用的理想選擇,特別是在資源受限的嵌入式開發板上運行。
將Mosquitto移植到嵌入式開發板上,能夠使這些嵌入式設備具備完整的消息中間件功能。這對于需要進行遠程數據交換、設備控制和實時監控的物聯網項目尤其重要。比如,在智能家居或環境監控系統中,開發板通過Mosquitto與其他設備或系統進行通信,可以大大提升系統的靈活性和擴展性。
下面將和各位小伙伴詳細介紹如何將Mosquitto及其所依賴的OpenSSL、libuuid庫移植到ElfBoard的開發板,并在開發板上運行MQTT服務。
交叉編譯libuuid庫
1、下載地址https://sourceforge.net/projects/libuuid/files/
2、拷貝源碼到開發環境/home/elf/work目錄下解壓
elf@ubuntu:~/work$ tar zxvf libuuid-1.0.3.tar.gz elf@ubuntu:~/work$ cd libuuid-1.0.3/
3、創建install文件夾用來存放編譯安裝后的庫
elf@ubuntu:~/work/libuuid-1.0.3$ mkdir install
4、執行環境變量
elf@ubuntu:~/work/openssl-1.0.2g$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
5、生成Makefile
elf@ubuntu:~/work/libuuid-1.0.3$ ./configure --host=arm-poky-linux-gnueabi --prefix=$(pwd)/install
6、編譯
elf@ubuntu:~/work/libuuid-1.0.3$ make
7、安裝
elf@ubuntu:~/work/libuuid-1.0.3$ make install
8、查看安裝目錄下的文件并打包
elf@ubuntu:~/work/libuuid-1.0.3$ cd install/ elf@ubuntu:~/work/libuuid-1.0.3/install$ ls include lib elf@ubuntu:~/work/libuuid-1.0.3/install$ tar cvjf libuuid.tar.bz2 *
交叉編譯OpenSSL庫
1、下載地址:https://openssl-library.org/source/old/1.0.2/index.html
2、拷貝源碼到開發環境/home/elf/work目錄下解壓
elf@ubuntu:~/work$ tar zxvf openssl-1.0.2g.tar.gz elf@ubuntu:~/work$ cd openssl-1.0.2g/
3、創建install文件夾用來存放編譯安裝后的庫
elf@ubuntu:~/work/openssl-1.0.2g$ mkdir install
4、生成Makefile
elf@ubuntu:~/work/openssl-1.0.2g$ ./config no-asm shared --prefix=$(pwd)/install
5、修改Makefile
注釋掉第62行;第63行去掉“-m64”
注釋掉第180行
6、執行環境變量
elf@ubuntu:~/work/openssl-1.0.2g$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
7、編譯
elf@ubuntu:~/work/openssl-1.0.2g$ make
8、安裝
elf@ubuntu:~/work/openssl-1.0.2g$ make install
9、查看安裝目錄下的文件并打包
elf@ubuntu:~/work/openssl-1.0.2g$ cd install/ elf@ubuntu:~/work/openssl-1.0.2g/install$ ls bin include lib ssl elf@ubuntu:~/work/openssl-1.0.2g/install$ tar cvjf openssl.tar.bz2 *
交叉編譯Mosquitto庫
1、下載地址:https://mosquitto.org/files/source/
2、拷貝源碼到開發環境/home/elf/work目錄下解壓
elf@ubuntu:~/work/mosquitto-1.5.1$ tar zxvf mosquitto-1.5.1.tar.gz elf@ubuntu:~/work/mosquitto-1.5.1$ cd mosquitto-1.5.1/
3、創建install文件夾用來存放編譯安裝后的庫
elf@ubuntu:~/work/mosquitto-1.5.1$ mkdir install
4、執行環境變量
elf@ubuntu:~/work/mosquitto-1.5.1$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
5、編譯
elf@ubuntu:~/work/mosquitto-1.5.1$ make WITH_SRV=no CFLAGS="-I /home/elf/work/openssl-1.0.2g/install/include -I /home/elf/work/openssl-1.0.2g/install/lib -I /home/elf/work/openssl-1.0.2g/install/include/openssl -I /home/elf/work/libuuid-1.0.3/install/include -I /home/elf/work/libuuid-1.0.3/install/lib" LDFLAGS="-L /home/elf/work/openssl-1.0.2g/install/lib -L /home/elf/work/libuuid-1.0.3/install/lib -lssl -lcrypto -luuid" CROSS_COMPILE=" "
6、安裝
elf@ubuntu:~/work/mosquitto-1.5.1$ make DESTDIR=$(pwd)/install install
7、查看安裝目錄下的文件
elf@ubuntu:~/work/mosquitto-1.5.1$ cd install elf@ubuntu:~/work/mosquitto-1.5.1/install$ ls etc usr elf@ubuntu:~/work/mosquitto-1.5.1/install$ tar cvjf mosquitto.tar.bz2 *
移植到開發板
將libuuid.tar.bz2、openssl.tar.bz2、mosquitto.tar.bz2壓縮包通過U盤拷貝到開發板根目錄下解壓。
root@ELF1:~# cp /run/media/sda1/libuuid.tar.bz2 / root@ELF1:~# cp /run/media/sda1/openssl.tar.bz2 / root@ELF1:~# cp /run/media/sda1/mosquitto.tar.bz2 / root@ELF1:~# cd / root@ELF1:/# tar mxvf libuuid.tar.bz2 root@ELF1:/# tar mxvf openssl.tar.bz2 root@ELF1:/# tar mxvf mosquitto.tar.bz2
將/usr/local/lib、/usr/local/bin、/usr/local/sbin文件夾下所有文件復制到根目錄/lib文件夾下。
root@ELF1:/# cd usr/local/ root@ELF1:/usr/local# cp -rf ./lib/* /lib root@ELF1:/usr/local# cp -rf ./bin/* /bin root@ELF1:/usr/local# cp -rf ./sbin/* /bin
將/etc/mosquitto/文件夾下mosquitto.conf.example文件復制到根目錄/etc下并重命名為mosquitto.conf。
root@ELF1:/usr/local# cd /etc/mosquitto/ root@ELF1:/etc/mosquitto# cp mosquitto.conf.example /etc/mosquitto.conf
修改/etc/mosquitto.conf文件,在第40行下添加user root。
保存退出
測試
1、打開兩個串口終端,一個串口登錄,一個網口登錄
2、啟動mosquitto服務
root@ELF1:~# mosquitto -d -c /etc/mosquitto.conf
3、一端訂閱test主題
root@ELF1:~# mosquitto_sub -t test
4、一端發布test主題
root@ELF1:~# mosquitto_pub -t test -m "hello world"
可以看到訂閱端接收到發布端的“hello world”消息,測試成功。
-
單片機
+關注
關注
6036文章
44557瀏覽量
635098 -
嵌入式
+關注
關注
5082文章
19118瀏覽量
305043 -
開發板
+關注
關注
25文章
5046瀏覽量
97432 -
mosquitto
+關注
關注
0文章
5瀏覽量
2933
發布評論請先 登錄
相關推薦
評論