利用docker快速搭建arm环境进行源码编译及代码测试
-
准备
- 安装好docker环境。
-
启动multiarch/qemu-user-static跨平台模拟窗口
sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
-
编写Dockerfile构建arm镜像
# 第一阶段:准备编译环境和源码 # 构建ptp4l,基于arm64v8/centos:7 FROM arm64v8/centos:7 as ptp-biluder # 安装编译 LinuxPTP 所需的依赖 RUN yum update -y && yum install -y gcc make # 复制 LinuxPTP 源代码压缩包到镜像中 COPY ./linuxptp-4.2.tgz /tmp/linuxptp.tgz # 创建目录结构并解压源码压缩包 RUN mkdir -p /linuxptp/src \ && tar -xzvf /tmp/linuxptp.tgz -C /linuxptp/src --strip-components=1 # 设置工作目录为 LinuxPTP 源码目录 WORKDIR /linuxptp/src # 编译 LinuxPTP RUN make && \ make install #构建libpacp FROM arm64v8/centos:7 as libpcap-biluder # 安装编译 libpcap 所需的依赖 RUN yum update -y && yum install -y gcc make flex bison byacc libpcap-devel # 将 libpcap 的源代码拷贝到镜像中(假设你已经将 libpcap 源码放在和 Dockerfile 同一目录下) COPY ./libpcap-1.10.4.tar.gz /tmp/libpcap.tar.gz # 解压源代码并编译安装 RUN cd /tmp && \ tar -xvf libpcap.tar.gz && \ cd libpcap-1.10.4 && \ ./configure && \ make && \ make install # 第二阶段:创建最终镜像 FROM arm64v8/centos:7 # 将 OpenJDK 安装包拷贝进容器 COPY ./OpenJDK8U_aarch64_linux.tar.gz /tmp/openjdk.tar.gz # 解压安装 OpenJDK RUN mkdir -p /usr/lib/jvm && \ tar -xzf /tmp/openjdk.tar.gz -C /usr/lib/jvm && \ rm /tmp/openjdk.tar.gz # 设置 JAVA_HOME 环境变量 ENV JAVA_HOME /usr/lib/jvm/jdk8u402-b06 ENV PATH $PATH:$JAVA_HOME/bin # 从第一阶段复制编译好的 LinuxPTP 可执行文件到最终镜像中 COPY --from=ptp-biluder /usr/local/sbin/ /usr/local/bin/ COPY --from=libpcap-biluder /usr/local/lib/libpcap* /usr/lib64/
-
生成镜像
sudo docker build -t ptp4l .
-
运行容器
sudo docker run -it --name ptp4l ptp4l /bin/bash
-
容器内运行命令