1、前言
前面的测试例程都是基于Linux PC上的,但在我们的使用过程中,往往需要在其他平台上使用,比如ARM架构的平台,这时由于CPU架构的不同,指令集也就不同,所以接下来就是需要进行交叉编译。
2、交叉编译步骤
回想一下在PC上编译的步骤(文章链接),结合config.mk可以知道mosquitto依赖于OpenSSL,除非你确定不再使用密码认证,所以接下来需要先编译OpenSSL。
2.1 交叉编译OpenSSL
源码下载:https://www.openssl.org/source/old/
编译步骤:
tar xzvf openssl-1.1.0k.tar.gz
cd openssl-1.1.0k/
mkdir tmp
./config shared no-asm --prefix=$PWD/tmp/
vi Makefile # 修改内容如下
CROSS_COMPILE=arm-linux-gnueabihf-
# 重点 --> 由于我们的板子CPU是32位,所以需要去掉所有“-m64”选项
make
make install
ls -l tmp/ # 我们感兴趣的只有bin/include/lib三个路径
2.2 交叉编译mosquitto
源码下载:https://mosquitto.org/download/
编译步骤:
tar xzvf mosquitto-1.6.9.tar.gz
cd mosquitto-1.6.9/
make CROSS_COMPILE=arm-linux-gnueabihf- CC=gcc \
CFLAGS="-I$PWD/../openssl-1.1.0k/tmp/include" \
LDFLAGS="-L$PWD/../openssl-1.1.0k/tmp/lib -lssl -lcrypto" \
WITH_DOCS=no
make prefix=. DESTDIR=$PWD/tmp/ WITH_DOCS=no install
ls -l tmp/