利用docker构建arm编译环境

利用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
    
  • 容器内运行命令

posted @ 2024-03-06 17:13  huahua315148  阅读(700)  评论(0)    收藏  举报