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。

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

相关推荐
萝卜小白4 分钟前
算法实习学习记录-day01
linux·服务器
私人珍藏库9 分钟前
【Android】Operit AI v1.10.0+11 豆包ai手机开源版 自动化手机
运维·自动化
浮槎来24 分钟前
光伏组件的PID学习
运维·学习·硬件工程·光伏
热爱专研AI的学妹40 分钟前
DataEyes API:一站式大模型聚合网关,600 + 模型统一调用与负载均衡实战方案
运维·负载均衡
cyber_两只龙宝42 分钟前
【Oracle】Oracle之SQL中的单行函数
linux·运维·数据库·sql·云原生·oracle
成都被卷死的程序员1 小时前
RustDesk 自建远程控制服务器部署全记录(含错误排查与最终方案)
运维·服务器
overmind1 小时前
oeasy Python 120[专业选修]列表_直接赋值_浅拷贝_shallowcopy_深拷贝_deepcopy
linux·windows·python
小宋0011 小时前
Ubuntu Terminator(多开并行终端工具)
linux·运维·ubuntu
Wyawsl1 小时前
keepalived高可用与负载均衡笔记
运维·笔记·负载均衡
小尔¥1 小时前
keepalived高可用与负载均衡
linux·运维·负载均衡