IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    使用 docker 构建 preboot 交叉编译环境

    Hacper\'s Blog发表于 2024-05-05 02:00:18
    love 0

    ASR1606/ASR1603 的 preboot 代码需要在 Linux 环境下编译,通常使用 VMware 或者 VirtualBox 软件创建一个 Linux 虚拟机,在虚拟机中做交叉编译。但 preboot 不是那种需要经常编译的代码,完全可以将 preboot 的编译环境制作成 docker 镜像,与虚拟机相比,docker 的启动速度更快,占用资源更少,需要用到的时候创建一个 docker 容器来编译 preboot,非常适合用来做这类偶尔需要用一下的场景。

    构建镜像

    docker 根据 dockerfile 文件来构建镜像,dockerfile 中的命令描述其实就是搭建交叉编译环境的过程,主要将工具链、编译脚本复制到镜像内并配置好环境变量。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    FROM ubuntu:latest
    LABEL version="1.0.0"
    LABEL author="hacper"
    
    RUN apt update && apt install make unzip curl -y &&  mkdir /preboot && mkdir /preboot/src
    COPY gcc-arm-none-eabi-9-2019-q4-major.zip /preboot
    COPY build_CRANEL.sh /preboot
    COPY build_CRANEM.sh /preboot
    WORKDIR /preboot
    RUN unzip gcc-arm-none-eabi-9-2019-q4-major.zip && rm gcc-arm-none-eabi-9-2019-q4-major.zip
    ENV PATH=$PATH:/preboot/gcc-arm-none-eabi-9-2019-q4-major/bin
    

    依赖的工具链 gcc-arm-none-eabi-9-2019-q4-major.zip,需要将其放在根目录。然后执行 docker build 命令构建镜像:

    1
    
    docker build -t hacper/preboot_builder:latest .
    

    镜像构建完成之后可以将镜像推送到 docker hub,后面使用的时候直接从 docker hub 拉取构建好的镜像。

    1
    
    docker push hacper/preboot_builder
    

    使用

    后面使用只需要从 docker hub 拉取镜像:

    1
    
    docker pull hacper/preboot_builder
    

    然后创建容器:

    1
    
    docker run -v /e/workspace/preboot/preboot_boot2:/preboot/src -it hacper/preboot_builder
    

    /e/workspace/preboot/preboot_boot2 只是示例路径,需要修改为自己电脑上的 preboot 源码路径。preboot_boot2 目录下的 CRANEL、CRANEM 分别放置对应的 preboot 源码,将 preboot_boot2 目录挂载到容器中。

    执行编译脚本编译preboot

    1
    2
    
     ./build_CRANEL.sh
     ./build_CRANEM.sh
    

    生成的镜像分别在路径:

    1
    2
    3
    
    preboot_boot2\CRANEL\apps\preboot\bin\crane\preboot.bin
    
    preboot_boot2\CRANEM\apps\preboot\bin\cortexr-arom-crane\preboot.bin
    


沪ICP备19023445号-2号
友情链接