以海思3556平台为例:
Dockerfile
FROM ubuntu:18.04
## Setup env
ENV TARGET_PLATFORM="hi3556v200"
ENV TARGET_PLATFORM_MACRO="platform_${TARGET_PLATFORM}"
ENV ARCH="armv7-a"
ENV TARGET_ARM=true
ENV HAS_NEON=true
ENV HAS_FPU=false
ENV TOOLCHAIN_NAME=arm-himix410-linux
ENV TOOLCHAIN_PREFIX=${TOOLCHAIN_NAME}-
ENV TOOLCHAIN_HOME=/opt/arm-himix410-linux
ENV TOOLCHAIN_INCLUDE_PATH=${TOOLCHAIN_HOME}/include
ENV TOOLCHAIN_LIB_PATH=${TOOLCHAIN_HOME}/lib
ENV PATH=${PATH}:${TOOLCHAIN_HOME}/bin
RUN apt-get install -y gcc-multilib lib32z1 &&\
apt-get clean
## Extract toolchain package to docker
ADD arm-himix410-linux.tgz /tmp
## Install toolchain package
RUN cd /tmp/arm-himix410-linux \
&& ./arm-himix410-linux.install /opt \
&& rm -fr /tmp/*
Docker镜像的内置环境变量
构建镜像的时候,需设置以下环境变量:
ARCH : CPU架构,用于交叉编译,比如:armv7, x86_64等
TARGET_PLATFORM :目标平台名称,如:x86_64-linux-gnu, macos, win64, som928, som626等
TARGET_ARM : 该环境变量是为了兼容旧项目代码,当目标平台为ARM时,需定义该环境变量,其值固定为true.
TOOLCHAIN_NAME :工具链平台名称:比如:arm-himix410-linux
TOOLCHAIN_PREFIX :工具链前缀,其值固定为
T
O
O
L
C
H
A
I
N
N
A
M
E
−
T
O
O
L
C
H
A
I
N
H
O
M
E
:
工
具
链
的
安
装
目
录
,
其
值
固
定
为
/
o
p
t
/
{TOOLCHAIN_NAME}- TOOLCHAIN_HOME : 工具链的安装目录,其值固定为 /opt/
TOOLCHAINNAME−TOOLCHAINHOME:工具链的安装目录,其值固定为/opt/{TOOLCHAIN_NAME}
TOOLCHAIN_INCLUDE_PATH : 工具链的头文件搜索路径,例如 ${TOOLCHAIN_HOME}/include
TOOLCHIAN_LIB_PATH : 工具链的程序库搜索路径,例如 ${TOOLCHAIN_HOME}/lib
HAS_NEON : 是否支持neon硬件加速,其值为true或false
HAS_FPU : 是否支持FPU硬件浮点计算器,其值为true或false
构建生成镜像:
docker build -t hi3556:v1.0 . //hi3556:v1.0 镜像名称:版本号
创建启动镜像容器:
docker run -t -d -v /work:/work --name hi3556 hi3556:v1.0 /bin/bash //-v目录映射,--name容器命名, /bin/bash维持容器不自动退出
进入容器:
docker exec -u 0 -it hi3556 bash
镜像导出:
docker save -O hi3556.tar hi3556:v1.0