openwrt中添加三方包paho.mqtt.c

最近在使用全志的tina4.0做开发,tina4.0是基于openwrt的,之前没做过openwrt开发,这里记录下过程中遇到的问题。

在tina4.0中添加三方包分两步: (1) 将下载好的paho.mqtt.c-1.3.14.zip放到dl中。(2) 在package/prize/libpaho-mqtt中新建Makefile

include $(TOPDIR)/rules.mk

# 库基本信息
PKG_NAME:=libpaho-mqtt
PKG_VERSION:=1.3.14
PKG_RELEASE:=1
PKG_LICENSE:=EPL-2.0
PKG_SOURCE_URL:=https://github.com/eclipse/paho.mqtt.c/archive/refs/tags/v$(PKG_VERSION).zip
PKG_SOURCE:=paho.mqtt.c-$(PKG_VERSION).zip
CMAKE_INSTALL:=1
PKG_HASH:=ad67f3...

PKG_BUILD_DIR := $(COMPILE_DIR)/paho.mqtt.c-$(PKG_VERSION)

include $(BUILD_DIR)/package.mk
# include $(BUILD_DIR)/cmake.mk  # paho-mqtt-c 使用 CMake 构建,需引入 cmake 支持

TARGET_LDFLAGS += -ldl

# 定义库在 menuconfig 中的信息
define Package/libpaho-mqtt
    SECTION:=libs
    CATEGORY:=Libraries
    TITLE:=Eclipse Paho MQTT C Client Library
    URL:=https://github.com/eclipse/paho.mqtt.c
    DEPENDS:=+libc +libpthread +libopenssl  # 添加 OpenSSL 依赖(如果需要 SSL 支持)
endef

define Package/libpaho-mqtt/description
      Eclipse Paho MQTT C client library for MQTT 3.1/3.1.1
endef

define Build/InstallDev
    $(INSTALL_DIR) $(1)/usr/include
    $(CP) $(PKG_BUILD_DIR)/src/*.h $(1)/usr/include

    $(INSTALL_DIR) $(1)/usr/lib
    $(CP) $(PKG_BUILD_DIR)/build/output/libpaho-*.so* $(1)/usr/lib/
endef

# 安装库到目标系统
define Package/libpaho-mqtt/install
    $(INSTALL_DIR) $(1)/usr/lib
    $(CP) $(PKG_BUILD_DIR)/build/output/libpaho-*.so* $(1)/usr/lib/
endef

$(eval $(call BuildPackage,libpaho-mqtt))

在编译中遇到的问题记录:

1、在完成上述两个步骤后,在执行make package/libpaho-mqtt/compile时提示:No rule to make target 'package/libpaho-mqtt/compile'. Stop. 原因有两个:

    (1) 添加完上述步骤后,需要执行make menuconfig,选中libpaho-mqtt

    (2) 路径和包名对不上:define Package/libpaho-mqtt宏,所以package/prize/libpaho-mqtt,最后这个路径一定是libpaho-mqtt,路径和宏名需要统一

2、目标包的编译方式:如果要使用CMake进行编译,则需要include $(BUILD_DIR)/cmake.mk

posted @ 2025-08-01 09:29  太极者  阅读(18)  评论(0)    收藏  举报