ubuntu 和 RV1126 交叉编译Mosqutiio-1.6.9

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

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

cpp 复制代码
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,所以这里我做一个分解,写一个头文件地址和两个库文件地址,直接找到库文件

cpp 复制代码
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。

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

相关推荐
敢敢のwings22 分钟前
类OpenClaw 网络深度解析:AI Agent 自动化的新范式
运维·人工智能·自动化
IPdodo_23 分钟前
代理 IP 服务商 SLA 怎么验?7 项指标与 Python 探测脚本实战
运维·python·网络协议·网络安全·代理ip
云飞云共享云桌面35 分钟前
智能装备工厂研发团队如何利用单台服务器承载 10 路 SolidWorks 并发?
运维·服务器·3d·自动化·制造
王琦031842 分钟前
haproxy
运维·云原生
发量惊人的中年网工1 小时前
如何验证DDoS高防真的生效?从源站隐藏到正常访问的完整验收方法
运维·网络·数据库·ddos
艾伦_耶格宇1 小时前
【ELK】-8 logstash的filter模块详解
运维·elk·filter
躺不平的理查德1 小时前
OpenSSL 的异步 TLS 1.3 加密
linux·运维·服务器
tedcloud1231 小时前
Awesome DSH Plugin 怎么用?给 DeepSeek Harness 搭建自己的插件生态
大数据·linux·服务器·人工智能·音视频
楷哥爱开发1 小时前
IPFoxy爬虫代理配置指南:从0搭建Crawl4AI网页爬虫教程
大数据·运维·人工智能·爬虫
钓鱼的小小猫1 小时前
从零拿捏Linux(一) ---- 命令(视频秒解)
linux·linux命令