一、开发环境搭建

一、环境搭建

1、实体环境

  1. 预安装编译环境

    sudo apt-get update && sudo apt-get install git ssh make gcc libssl-dev \
    liblz4-tool expect expect-dev g++ patchelf chrpath gawk texinfo chrpath \
    diffstat binfmt-support qemu-user-static live-build bison flex fakeroot \
    cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev \
    libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev \
    libmpc-dev bc python-is-python3 python2 python3 libgbm-dev libwayland-egl-backend-dev
    
  2. python版本

    PYTHON3_VER=3.6.15
    echo "wget https://www.python.org/ftp/python/${PYTHON3_VER}/Python-${PYTHON3_VER}.tgz"
    echo "tar xf Python-${PYTHON3_VER}.tgz"
    echo "cd Python-${PYTHON3_VER}"
    echo "sudo apt-get install libsqlite3-dev"
    echo "./configure --enable-optimizations"
    echo "sudo make install -j8"
    
    # 查看当前系统安装的Python版本有哪些
    ls /usr/bin/python*
    # 将python链接到python3
    sudo ln -sf /usr/bin/python3 /usr/bin/python
    # 重新查看默认Python版本
    python -V
    
  3. 升级make版本

    make -v
    # GNU Make 4.2
    # Built for x86_64-pc-linux-gnu
    sudo apt update && sudo apt install -y autoconf autopoint
    
  4. 升级lz4版本

    lz4 -v
    # *** LZ4 command line interface 64-bits v1.9.3, by Yann Collet ***
    
    git clone https://gitee.com/mirrors/LZ4_old1.git
    cd LZ4_old1
    make
    sudo make install
    sudo install -m 0755 lz4 /usr/bin/lz4
    
  5. 升级git版本

    git -v
    # git version 2.38.0
    
    sudo apt update && sudo apt install -y libcurl4-gnutls-dev
    # 或者
    git clone https://gitee.com/mirrors/git.git --depth 1 -b v2.38.0
    cd git
    make git -j8
    make install
    sudo install -m 0755 git /usr/bin/git
    

2、基于docker

2.1、构建镜像

  1. 编辑Dockerfile

    # 设置基础镜像
    # FROM ubuntu:18.04
    FROM ubuntu:22.04
    
    # 设置作者信息
    LABEL maintainer="<work_mo@outlook.com>"
    
    ARG DEBIAN_FRONTEND=noninteractive
    ENV TZ=Asia/Shanghai
    
    # 设置环境变量,用于非交互式安装,并设置代理(根据需要替换代理地址和端口)
    # ENV DEBIAN_FRONTEND=noninteractive \
    #    http_proxy=http://127.0.0.1:8080 \
    #    https_proxy=http://127.0.0.1:8080 \
    #    no_proxy="localhost,127.0.0.1"
    
    # 备份源列表文件
    RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
    
    # 使用 USTC 源替换默认的源
    # RUN echo "deb http://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse\n\
    # deb http://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse\n\
    # deb http://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse\n\
    # deb http://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse" \
    # > /etc/apt/sources.list && \
    #    apt-get clean
    
    # 将源列表中的 http://.*ubuntu.com 替换为 http://mirrors.aliyun.com
    RUN sed -i 's@http://.*ubuntu.com@http://mirrors.aliyun.com@g' /etc/apt/sources.list && \
        apt-get clean
    
    RUN rm -rf /var/lib/apt/lists/lock && \
        rm -rf /var/cache/apt/archives/lock && \
        rm -rf /var/lib/dpkg/lock*
    
    # 更新并安装必要的软件包
    RUN apt-get update -y && \
        apt-get upgrade -y && \
        apt-get install -y \
        bc binfmt-support bison bsdmainutils build-essential chrpath cmake cpio curl \
        device-tree-compiler diffstat expat expect fdisk file flex gawk git iputils-ping \
        libegl1-mesa libelf-dev libgmp-dev libgucharmap-2-90-dev liblz4-tool libmpc-dev \
        libncurses-dev libsdl1.2-dev libssl-dev locales mesa-common-dev net-tools \
        patchelf python2 python2-dev python3 python-is-python3 python3-git python3-jinja2 \
        python3-pexpect python3-pip python3-pyelftools python3-subunit qemu-user-static \
        repo rsync ssh strace swig vim socat sudo texinfo time tree unzip wget lz4 \
        libncurses5 libncurses5-dev zip libgbm-dev libwayland-egl-backend-dev
    
    # RUN ln -s /usr/bin/python3 /usr/bin/python
    
    # 生成本地化语言支持
    RUN locale-gen en_US.UTF-8
    ENV LANG=en_US.UTF-8
    
    # 添加用户并配置 sudo 权限
    RUN useradd -c 'mo user' -m -d /home/mo -s /bin/bash mo && \
        usermod -a -G sudo mo && \
        sed -i -e '/%sudo\tALL=(ALL:ALL) ALL/c\%sudo ALL=(ALL) NOPASSWD: ALL' /etc/sudoers
    
    USER mo
    # 设置docker工作目录为/home/mo
    WORKDIR /home/mo
    
    # 删除不必要的软件包和缓存
    # RUN sudo apt-get autoclean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
    
    # 输出构建完成的消息
    RUN echo "docker image build complete !"
    
  2. 创建镜像

    sudo docker build -t mo_img .
    

2.2、新建并启动容器

docker run --privileged -it --name mo_img_sdk -u mo -v /home/主机sdk路径:/home/mo/sdk mo_img /bin/bash -c "cd /home/mo/sdk && exec /bin/bash"

# docker run --privileged -it --name mo_img_sdk -u mo -v D:\file\work\project\docker\ubuntu22\sdk:/home/mo/sdk mo_img /bin/bash -c "cd /home/mo/sdk && exec /bin/bash"

2.3、常用指令

1、查询

# 列出所有本地镜像
docker images -a
# 列出所有本地容器
docker ps -a

2、运行容器

docker start xxx
docker attach xxx

3、容器导入导出

# 导出
docker export 7691a814370e > user_env.tar

# 导入
cat user_env.tar | docker import - user_env:v1.0
# 运行导入的镜像
docker run -it user_env:v1.0 /bin/bash

4、删除

# 删除镜像
docker rmi xxx
# 删除容器
docker rm xxx
posted @ 2025-05-22 14:18  暮云星影  阅读(103)  评论(0)    收藏  举报