当前位置: 首页 > news >正文

ubuntu 和 RV1126 交叉编译Mosqutiio-1.6.9

最近需要交叉编译mosquitto,遇到一些小问题记录一下。

1.众所周知使用它自带的Makefile编译的时候,只需要在编译前,指定它config.mk中的变量:CFLAGS头文件路径 和 LDFLAGS库文件路径就ok,例子如下:

export CFLAGS=“-I/home/.../openssl/...  -I/home/.../uuid/..."
export LDFLAGS="-L/home/.../uuid/lib -L/home/.../openssl/lib  -luuid -lcrypto -lssl"
make -j8
make install

//如果你想指定安装路径的话 试一试这个
...
...
make prefix=/...
make install

2.当前,我们单独编译mosquitto的话是非常简单的,但是我们要是想把它放到其他项目的cmakelist架构中呢。直接查找当然方便,但是要是外部库比较多,移植和维护起来就会变的比较麻烦,所以我们使用 ExternalProject_Add 来在项目中构建编译Mosquitto。

我用的是Mosquitto-1.6.9的源码,地址

Tags · eclipse-mosquitto/mosquitto · GitHub

使用cmakelist组织的时候发现,/lib/目录下messages_mosq.c源文件缺少了/src/deps目录下的utilst.h文件,只需要做一个【复制】和【添加进/lib目录下的cmakelist文件中】即可。

众所周知,使用ExternalProject_Add的时候我们可以使用cmake传入参数,我这里传入了上层的构建install地址,然后发现mosquitto内部自己find_package了openssl,并且没看到需要uuid,uuid先不管,openssl的话交叉编译过程中,如果本地系统路径下已经安装了x86或者自己系统的openssl,架构版本和目标编译可能不太一致。

这里我多次使用-DCMAKE_PREFIX_PATH和-DOPENSSL_ROOT_DIR来指定openssl的所有路径,但是都失败了,貌似是交叉编译工具目录下就有x86的openssl库,所以find_package直接就找到了x86的ssl和crypto,指定似乎没有用,怎么办呢???

那我就不find_package了,我把mosquitto-1.6.9的源码中的最上层的cmakelist中自己设置OPENSSL_INCLUDE_DIR和OPENSSL_LIBRARY,因为/src和/lib目录下cmakelist构建使用了openssl库中的ssl和crypto,所以这里我做一个分解,写一个头文件地址和两个库文件地址,直接找到库文件

set(OPENSSL_SSL_LIBRARY "${OPENSSL_ROOT_DIR}/lib/libssl.so")
set(OPENSSL_CRYPTO_LIBRARY "${OPENSSL_ROOT_DIR}/lib/libcrypto.so")
  • OPENSSL_ROOT_DIR是从外层传 ExternalProject_Add的时候传进来的

到这一步就该把find_package(openssl)注释掉了,然后把/src和/lib两个目录下的cmakelist中的OPENSSL_LIBRARY换成OPENSSL_SSL_LIBRARY 和 OPENSSL_CRYPTO_LIBRARY。

我都想不到怎么还能编译不过???

相关文章:

  • linux批量使用多个用户名登录脚本、为了给主机增加一个指定用户名的登录记录、无需root密码的主机切换到root方式
  • 【玩转全栈】---- Pinia 组件状态管理器
  • 卷积神经网络与计算机视觉:从数学基础到实战应用
  • 沉浸式CSS学习路径
  • 【贪心算法3】
  • git设置本地仓库和远程仓库
  • 解决 word 2016 粘贴图片老是乱飘的问题
  • 十分钟用DeepSeek v3快速搭建企业级本地私有知识库(保姆级教程),AI终于私有化了!
  • Java糊涂包(Hutool)的安装教程并进行网络爬虫
  • 训练大模型LLM选择哪种开发语言最好
  • 2.3 DeepSeek SDK接入与鉴权体系设计
  • RabbitMQ (Java)学习笔记
  • electron+vue+webview内嵌网页并注入js
  • Android Glide 框架线程管理模块原理的源码级别深入分析
  • 第七次CCF-CSP认证(含C++源码)
  • 微前端最佳实践:Module Federation 的使用步骤详解
  • OmniParser技术分析(一)
  • c++ constraints与concepts使用笔记
  • 搜广推校招面经四十三
  • 使用 React 和 Ant Design 处理 Excel 和 CSV 文件
  • 德雷克海峡发生6.4级地震,震源深度10千米
  • 2025上海车展圆满闭幕,共接待海内外观众101万人次
  • 印巴局势紧张或爆发军事冲突,印度空军能“一雪前耻”吗?
  • 巴菲特股东大会前瞻:执掌伯克希尔60年,巨轮将驶向何方
  • 即日起,“应急使命·2025”演习公开征集新质救援能力
  • 49:49白热化,美参议院对新关税政策产生巨大分歧