沧州品牌网站建设,c2c平台网站建设,一天必赚100元的游戏,如何在云主机上搭建wordpress交叉编译 MQTT/Mosquitto
概述 Eclipse Mosquitto 是一个开源#xff08;EPL/EDL许可#xff09;消息代理#xff0c;它实现了 MQTT 协议版本 5.0、3.1.1 和 3.1。Mosquitto 重量轻#xff0c;适用于从低功耗单板计算机到全服务器的所有设备。
MQTT 协议提供了一种使用发…交叉编译 MQTT/Mosquitto
概述 Eclipse Mosquitto 是一个开源EPL/EDL许可消息代理它实现了 MQTT 协议版本 5.0、3.1.1 和 3.1。Mosquitto 重量轻适用于从低功耗单板计算机到全服务器的所有设备。
MQTT 协议提供了一种使用发布/订阅模型执行消息传递的轻量级方法。这使得它适用于物联网消息传递如低功耗传感器或移动设备如手机、嵌入式计算机或微控制器。
Mosquitto 项目还提供了一个用于实现 MQTT 客户端的 C 库以及非常流行的 mosquitto_pub 和 mosquitto_sub 命令行 MQTT 客户端。
官方网址https://mosquitto.orgGitHub: https://github.com/eclipse/mosquitto
下载
如果以商用量产为目的一般选择正式的发行版本为佳。在官方网址 Download 页面下方会显示最新可下载的源码压缩包。根据需求选择合适的版本进行下载以最新的 2.0.15 版本为例在页面下方点击链接下载源码包 mosquitto-2.0.15.tar.gz。 也可以直接使用 wget 命令下载
wget https://mosquitto.org/files/source/mosquitto-2.0.15.tar.gz如果需要使用特定版本可以在 https://mosquitto.org/files/ 位置找到 mosquitto 的历史发行版本。进入网页之后选择 source/ 链接然后选择下载压缩包即可。
交叉编译
解压缩源码包
tar -xvf mosquitto-2.0.15.tar.gz解压缩源码包之后建议先阅读 README.md 与 README-compiling.md 文档里面有关于编译的相关信息。
在 mosquitto 的文档及配置文件中有提及到依赖关系最主要的是依赖 OpenSSL 与 cJSON 库如果需要完整编译可以先参考「交叉编译 OpenSSL」与「交叉编译 cJSON」两篇文章。需要注意的点就是需要使用 make DESTDIR$BUILDSYSROOT install 将编译产物部署到 sysroot 目录便于 mosquitto 编译时依赖效果类似于 apt install *-dev 安装开发依赖包。
在 README.md 文档中也提及到如果不需要依赖 cJSON 可以使用 make WITH_CJSONno 或者不需要依赖 OpenSSL 时使用 make WITH_TLSno 的方式来禁用编译依赖。
首先创建一个环境配置文件 aarch64-environment-setup配置最重要的交叉编译环境变量。
aarch64-environment-setup:
export TOOLCHAIN_ROOT/opt/toolchains/aarch64--glibc--stable-2022.03-1
export BUILDSYSROOT$TOOLCHAIN_ROOT/aarch64-buildroot-linux-gnu/sysroot
export PATH$TOOLCHAIN_ROOT/bin:$PATHexport PREFIX/usrexport CCaarch64-linux-gcc --sysroot$BUILDSYSROOT
export CXXaarch64-linux-g --sysroot$BUILDSYSROOT
export CPPaarch64-linux-gcc -E --sysroot$BUILDSYSROOT
export LDaarch64-linux-ld --sysroot$BUILDSYSROOT
export ARaarch64-linux-ar
export ASaarch64-linux-as
export NMaarch64-linux-nm
export GDBaarch64-linux-gdb
export OBJDUMPaarch64-linux-objdump
export OBJCOPYaarch64-linux-objcopy
export RANLIBaarch64-linux-ranlib
export READELFaarch64-linux-readelf
export STRIPaarch64-linux-stripexport PKG_CONFIG_SYSROOT_DIR$BUILDSYSROOT
export PKG_CONFIG_PATH$BUILDSYSROOT/usr/lib/pkgconfig:$BUILDSYSROOT/usr/share/pkgconfig在本示例中交叉编译工具位于 /opt/toolchains/aarch64--glibc--stable-2022.03-1/bin 目录下将该目录配置到 PATH 环境变量让系统能够正确搜索到。同时在配置 CCCXXCPP 与 LD 环境变量时指定 --sysrootdir 参数让交叉编译器搜索 dir 目录下的头文件与库文件而不是 /usr/include 及 /usr/lib。
source aarch64-environment-setup
make
make prefix/usr WITH_STRIPyes DESTDIR$BUILDSYSROOT install在源码目录下创建环境配置文件并调用 source 命令让环境变量生效执行 make 命令编译源码在 config.mk 文件中定义了 prefix 以及 WITH_STRIP 的默认值根据实际需求在执行 make 指令时重新进行配置使用 DESTDIR 参数作为安装目标文件的前缀变量后面带上你希望安装到的文件夹路径在本示例中BUILDSYSROOT 指的是交叉编译工具链的 sysroot 目录此环境变量在 aarch64-environment-setup 中已定义。更详细介绍可以参考 DESTDIR 官方介绍也可以参考「交叉编译 libcap」关于 DESTDIR 的用法说明。
最终你就可以在 $BUILDSYSROOT/usr 文件夹中找到交叉编译好的 mosquitto 头文件及库文件。如果需要以软件包的形式发布可以指定 DESTDIR 为其他目录比如 DESTDIR/tmp/sysroot 则最终交叉编译出来的产物会在 /tmp/sysroot 文件夹下。Good luck.
欢迎关注我的公众号飞翔的小黄鸭 也许会发现不一样的风景 △\triangle△ 交叉编译 cJSON