编写Dockerfile
FROM ubuntu:latest
# 设置工作目录
WORKDIR /app
# 安装依赖
# 添加i386架构,因为某些库只提供32位版本
RUN dpkg --add-architecture i386 \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
wget \
curl \
git \
cmake \
libssl-dev:i386 \
libssl-dev \
libc6-dev-i386 \
zlib1g-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 下载并解压交叉编译工具链
RUN wget --no-check-certificate https://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 && \
tar -xvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 && \
rm -rf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
# # 设置环境变量
ENV PATH=$PATH:/app/arm-2014.05/bin/
# # # 下载并编译安装openssl库
RUN wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1k.tar.gz && \
tar -xvf openssl-1.1.1k.tar.gz && \
cd openssl-1.1.1k && \
CC=gcc ./Configure linux-armv4 --prefix=/app/openssl --cross-compile-prefix=arm-none-linux-gnueabi- && \
make && \
make install && \
cd .. && \
rm -rf openssl-1.1.1k openssl-1.1.1k.tar.gz
# # 下载并编译安装Eclipse Paho MQTT C库
RUN wget --no-check-certificate https://github.com/eclipse/paho.mqtt.c/archive/v1.3.12.tar.gz && \
tar -xvf v1.3.12.tar.gz && \
cd paho.mqtt.c-1.3.12 && \
make CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar CFLAGS="-I/app/openssl/include" LDFLAGS="-L/app/openssl/lib" && \
make install && \
cd .. && \
rm -rf paho.mqtt.c-1.3.12 v1.3.12.tar.gz
# 清理
RUN apt-get remove -y build-essential wget && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /app/arm-2014.05
# 设置工作目录
WORKDIR /app/workspace
2 .创建docker容器
docker build -t name:v1.0 .
3 .生成库文件
在/app/openssl目录下可以看到交叉编译后的openssl库文件
在/usr/local/lib中可以看到mqtt的库