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

news/2025/1/12 23:10:07/

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

构建镜像

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

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 命令构建镜像:

docker build -t hacper/preboot_builder:latest .

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

docker push hacper/preboot_builder

使用

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

docker pull hacper/preboot_builder

然后创建容器:

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:

 ./build_CRANEL.sh./build_CRANEM.sh

生成的镜像分别在路径:

preboot_boot2\CRANEL\apps\preboot\bin\crane\preboot.binpreboot_boot2\CRANEM\apps\preboot\bin\cortexr-arom-crane\preboot.bin

http://www.ppmy.cn/news/1562627.html

相关文章

TCP通信原理学习

TCP三次握手和四次挥手以及为什么_哔哩哔哩_bilibili

【设计模式】介绍常见的设计模式

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 ✨ 介绍一下常见的设计模式✨ Spring 中常见的设计模式 这期内容主要是总结一下常见的设计模式,可…

应急响应之入侵排查(下)

一.进程排查 1.Windows 任务管理器查看 在 Windows 系统中,可通过任务管理器查看进程信息。操作步骤为:在任务管理器界面,于 “查看” 选项中选择 “选择列”,随后添加 “映像路径名称” 和 “命令行”,以此查看更多进…

探索 Oracle 数据库:核心概念与实践指南

Oracle 数据库是业界领先的关系型数据库管理系统 (RDBMS),广泛应用于企业级应用和大型数据处理。本文将深入探讨 Oracle 数据库的核心概念、常用功能以及最佳实践,帮助你更好地理解和使用 Oracle 数据库。 1. Oracle 数据库的核心概念 1.1 体系结构 O…

Android中Activity

一、AndroidManifest中的<activity>标签 <activity>标签在AndroidManifest.xml文件中用于定义和配置应用中的每一个Activity。Activity是Android应用的基本构建块之一&#xff0c;主要负责展示用户界面&#xff0c;并处理用户与之的交互。每个在应用中显示给用户的…

抖音生活服务举办直营服务商年度峰会 服务商支付交易额同比涨85%

1月7日&#xff0c;抖音生活服务在海南三亚举办了“服务无界&#xff0c;卓越领航”直营服务商年度峰会&#xff0c;公布了过去一年在服务商生态建设的举措与成果&#xff0c;并分享了新一年平台在战略经营方向、产品功能升级以及营销拓展等方面的规划布局。同时&#xff0c;为…

spring task使用

Spring Task 简介 Spring Task 是 Spring 框架原生自带的任务调度框架&#xff0c;它犹如一把瑞士军刀&#xff0c;为开发者提供了丰富多样的功能&#xff0c;助力轻松创建和管理定时任务。相较于其他一些第三方任务调度框架&#xff0c;Spring Task 最大的优势在于其与 Sprin…

宝塔安装教程,bt怎么安装 linux

Centos安装脚本 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 37a09b35 Ubuntu/Deepin安装脚本 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo b…