在arm编译速度慢,运行vscode远程耗费资源,因此尝试在ubuntu服务器上搭建armv8 64位编译环境,过程很简单,记录如下
一、安装qemu解释器
bash
# 宿主机安装解释器和时区设置
sudo apt install -y qemu-user-static tzdata
# 重启docker
sudo systemctl restart docker
二、编写Dockerfile
内容如下:
bash
# 使用多阶段构建,首先从x86_64的Ubuntu镜像开始
FROM ubuntu:20.04 as builder
# 安装 qemu-user-static
RUN apt-get update && apt-get install -y qemu-user-static tzdata
# 设置时区为东八区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 从aarch64的Ubuntu镜像创建最终的镜像
FROM arm64v8/ubuntu:20.04
# 复制 qemu-aarch64-static 从x86_64镜像
COPY --from=builder /usr/bin/qemu-aarch64-static /usr/bin
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
# 设置时区为东八区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo $TZ > /etc/timezone
# 替换源为清华镜像源
RUN sed -i s@/ports.ubuntu.com/@/mirrors.tuna.tsinghua.edu.cn/@g /etc/apt/sources.list
# sed -i s@/archive.ubuntu.com/@/mirrors.tuna.tsinghua.edu.cn/@g /etc/apt/sources.list && \
# sed -i s@/security.ubuntu.com/@/mirrors.tuna.tsinghua.edu.cn/@g /etc/apt/sources.list
# 安装build-essential, cmake, Python及相关工具
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
vim \
iputils-ping \
net-tools \
iproute2 \
libssl-dev \
libopencv-dev \
libfreetype6-dev \
libcurl4-openssl-dev \
git \
curl \
wget \
lsb-release \
gdb \
unzip \
tar \
python3 \
python3-pip \
python3-setuptools \
python-is-python3 \
software-properties-common \
&& rm -rf /var/lib/apt/lists/*
# 设置pip和pip3使用国内镜像源
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip -U && \
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ && \
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip -U && \
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
# 设置工作目录
WORKDIR /workspace
# 指定默认命令
CMD ["/bin/bash"]
三、构建docker镜像
bash
sudo docker build -t your_docker_image_name:your_tag -ubuntu2004 .
等待构建完成通过sudo docker images
即可查看构建成功的镜像,也可通过docker save
保存镜像
bash
sudo docker save -o your_save_name.tar your_docker_image_name
通过docker run
进入Docker
bash
sudo docker run --network=host -v your_path:/workspace -it your_image_id /bin/bash