paho-mqtt docker交叉编译配置

前言

配置paho mqtt的docker的交叉编译环境,用于代码提交bitbucket-pipeline自动化编译arm程序

环境准备

paho.mqtt.c 和 paho.mqtt.cpp代码下载不再赘述,参考(paho-mqtt开发环境搭建-CSDN博客)

openssl下载

wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz   // 版本根据需要自行选择
tar -xzvf openssl-1.1.1n.tar.gz

先准备一个文件夹,将这三份代码放到同一个目录

paho版本记录一下

// paho c++
3631bce7e0bd74cc11a46410669ccd2e23b6caed tag: v1.4.0
// paho c
6b1e202a701ffcdaa277b5644ed291287a70a7aa

openssl 编译脚本build.sh 放到代码根目录

#!/bin/bash
set -x
set -e
./Configure linux-aarch64 --prefix=/usr/local --cross-compile-prefix=aarch64-linux-gnu- no-unit-test
make -j8
make install

paho.mqtt.c 编译脚本build.sh 放到代码根目录

#!/bin/bash
set -x
set -e
cmake . -Bbuild -DPAHO_WITH_SSL=ON -DPAHO_BUILD_SHARED=OFF -DPAHO_BUILD_STATIC=ON
cd build
make -j8
make install
cd -
rm -r build

paho.mqtt.cpp 编译脚本build.sh 放到代码根目录

#!/bin/bash
set -x
set -e
cmake . -Bbuild -DPAHO_WITH_SSL=ON -DPAHO_BUILD_SHARED=OFF -DPAHO_BUILD_STATIC=ON
cd build
make -j8
make install
cd -
rm -r build

注意这里编的是静态库,根据需要自行修改
链接参考

target_link_libraries(mqtt_demo
  PahoMqttCpp::paho-mqttpp3-static
)

选取base镜像

docker.io/ubuntu:20.04

先用镜像本地试一下测试编译

我存放代码的目录为 /home/demo/docker_bulid/ 映射到容器的/usr/docker_build中,自行修改,并cd到对应目录

docker run -ti -v /home/demo/docker_bulid/:/usr/docker_bulid docker.io/ubuntu:20.04

交叉编译

aarch64交叉编译工具链安装(交叉编译工具 aarch64-linux-gnu-gcc 的介绍与安装-CSDN博客)

配置交叉编译环境变量

export ARM_TOOLCHAIN_PREFIX="/usr/bin/aarch64-linux-gnu-" 
export CC=${ARM_TOOLCHAIN_PREFIX}gcc
export CXX=${ARM_TOOLCHAIN_PREFIX}g++
export STRIP=${ARM_TOOLCHAIN_PREFIX}strip
export AR=${ARM_TOOLCHAIN_PREFIX}ar
export OBJCOPY=${ARM_TOOLCHAIN_PREFIX}objcopy
export RANLIB=${ARM_TOOLCHAIN_PREFIX}ranlib
export READELF=${ARM_TOOLCHAIN_PREFIX}readelf

依次运行openssl、paho.mqtt.c 和 paho.mqtt.cpp的编译脚本

环境配置后,可以编写测试程序,编译产物放到arm环境中测试一下,应该可以直接运行

docker build

openssl在刚刚在容器进行了交叉编译操作,因为是路径映射,做docker的时候,三个build.sh中可以只保留make install 操作

dockerfile base docker镜像自行换一下,注意这里也没有包含交叉编译链的安装

FROM docker.io/xxx

WORKDIR /usr/workspace

COPY openssl-1.1.1n /usr/workspace/openssl-1.1.1n

COPY paho.mqtt.c /usr/workspace/paho.mqtt.c

COPY paho.mqtt.cpp /usr/workspace/paho.mqtt.cpp

RUN cd /usr/workspace/openssl-1.1.1n/ && ./build.sh && cd - && rm -r /usr/workspace/openssl-1.1.1n

RUN cd /usr/workspace/paho.mqtt.c/ && ./build.sh && cd - && rm -r /usr/workspace/paho.mqtt.c

RUN cd /usr/workspace/paho.mqtt.cpp/ && ./build.sh && cd - && rm -r /usr/workspace/paho.mqtt.cpp

WORKDIR /

CMD ["/bin/bash"]

docker build

docker build -t <docker_name>:<docker_tag> . --no-cache

docker push

docker push <docker_name>:<docker_tag>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值