docker构建icraft3.6.2交叉编译环境

docker构建icraft3.6.2交叉编译环境

目录结构

1
2
3
4
5
6
7
8
9
$ tree
.
├── arm64.list
├── cmake-3.24.2.tar.gz
├── CustomOp_3.6.2_arm64.deb
├── Dockerfile
└── Icraft_3.6.2_arm64.deb

0 directories, 5 files

需要准备的安装包

1 Icraft_3.6.2_arm64.deb
2 CustomOp_3.6.2_arm64.deb

一次性执行脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
wget -c -e "https_proxy=127.0.0.1:10808" https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2.tar.gz

cat - > arm64.list <<'EOF'
deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main main restricted universe multiverse
deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
EOF

cat -  > Dockerfile <<'EOF'
FROM ubuntu:20.04

ARG CMake_Version
ARG CMake_file
ARG Icraft_FILE
ARG CustomOp_FILE
ARG Icraft_whl_FILE

# 先用 http(关键!)
RUN rm -f /etc/apt/sources.list && \
    echo "deb http://mirrors.ustc.edu.cn/ubuntu focal main restricted universe multiverse" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.ustc.edu.cn/ubuntu focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.ustc.edu.cn/ubuntu focal-security main restricted universe multiverse" >> /etc/apt/sources.list

# 先装证书
RUN apt-get update && apt-get install -y ca-certificates

# 再切回 https(可选)
RUN sed -i 's|http://|https://|g' /etc/apt/sources.list

RUN sed -i 's/^deb /deb [arch=amd64,i386] /' /etc/apt/sources.list; sed -i 's/^deb-src /deb-src [arch=amd64,i386] /' /etc/apt/sources.list

COPY arm64.list /etc/apt/sources.list.d/

RUN  dpkg --add-architecture arm64 && apt update && apt install -y \
     sudo \
     build-essential \
     libssl-dev \
     ninja-build \
     gcc-aarch64-linux-gnu \
     g++-aarch64-linux-gnu \
     libdw-dev:arm64 \
     libstdc++6:arm64

RUN mkdir -p /home/icraft
ENV HOME /home/icraft

COPY ${Icraft_FILE} ${CustomOp_FILE} ${CMake_file} /home/icraft

RUN cd /home/icraft; tar -zxvf ${CMake_file} && cd cmake-${CMake_Version} && ./bootstrap && make -j$(($(nproc)*2)) && make install -j$(($(nproc)*2))

RUN cd /home/icraft; dpkg -i ${Icraft_FILE} ${CustomOp_FILE}

WORKDIR /home/icraft
EOF

# 构建镜像,指定icraft的安装包及其依赖的算子安装包
docker build --build-arg CMake_Version=3.24.2 --build-arg CMake_file=cmake-3.24.2.tar.gz --build-arg Icraft_FILE=Icraft_3.6.2_arm64.deb --build-arg CustomOp_FILE=CustomOp_3.6.2_arm64.deb  -t icraft:3.6.2 .

# 清理构建缓存
docker system prune -f

进入容器

1
2
3
4
docker run -it -v ./:/home/icraft icraft:3.6.2 /bin/bash

# 验证icraft版本
icraft --version
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计