mosquitto移植到AM335x+Linux系统
1. 概述
本文档详细介绍如何将mosquitto 2.0.14版本移植到基于AM335x处理器的Linux系统中。mosquitto是一个实现了MQTT协议版本5.0、3.1.1和3.1的开源消息代理和客户端实现库。本文将介绍mosquitto库的配置、编译以及运行过程,包括依赖库的处理、交叉编译环境的配置等内容。整个项目使用CMake作为构建系统。
1.1 开发环境
- 硬件平台:AM335x处理器
- 操作系统:Linux 3.2
- mosquitto版本:2.0.14
- 构建工具:CMake 3.16+
- 交叉编译工具链:arm-arago-linux-gnueabi-gcc 4.5.3
- 依赖库:
- OpenSSL 1.1.1w(用于TLS支持)
- cJSON 1.7.15(用于WebSocket支持)
- 项目源码:https://gitcode.com/am335xt3/lvgl/tree/main/thirdpart/mosquitto
2. 交叉编译环境配置
2.1 工具链配置
项目使用arm-arago-linux-gnueabi工具链进行交叉编译。在toolchain.cmake中配置如下:
# toolchain.cmake
# 设置目标系统名称
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
# 指定交叉编译器的路径
set(CROSS_SYSROOT /opt/am335xt3-cross-devkit/arm-arago-linux-gnueabi)
set(CROSS_COMPILE_PATH /opt/am335xt3-cross-devkit/bin)
set(CROSS_PREFIX /opt/am335xt3-cross-devkit/bin/arm-arago-linux-gnueabi-)
set(CMAKE_C_COMPILER /opt/am335xt3-cross-devkit/bin/arm-arago-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER /opt/am335xt3-cross-devkit/bin/arm-arago-linux-gnueabi-g++)
set(CMAKE_ASM_COMPILER /opt/am335xt3-cross-devkit/bin/arm-arago-linux-gnueabi-as)
set(CMAKE_AR /opt/am335xt3-cross-devkit/bin/arm-arago-linux-gnueabi-ar)
set(CROSS_COMPILE_INCLUDE_PATH /opt/am335xt3-cross-devkit/arm-arago-linux-gnueabi/sysroot/usr/include)
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/am335xt3_install)
set(CMAKE_INTERNAL_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/am335xt3_internal_install)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lm -ldl")
# 指定库的查找路径
set(CMAKE_LIBRARY_PATH ${CMAKE_INTERNAL_INSTALL_PREFIX}/lib)
# 设置查找路径
set(CMAKE_FIND_ROOT_PATH ${CJSON_ROOT} ${OPENSSL_ROOT})
# 指定查找规则
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
# 禁用 CMake 的默认查找路径(如系统路径 /usr 和 /lib)
set(CMAKE_FIND_NO_PACKAGE_PREFIX_PATH TRUE)
3. 依赖库移植
3.1 cJSON库移植
cJSON库是一个轻量级的JSON解析库,在本项目中使用CMake进行构建。
3.1.1 CMake配置
在thirdpart/cJSON-1.7.15/CMakeLists.txt中已经包含了完整的构建配置,无需额外修改。主要

最低0.47元/天 解锁文章
352

被折叠的 条评论
为什么被折叠?



