0%

D2:开发环境搭建

本来以为可以很顺利地开始玩耍了,结果只把开发环境搭建成功了,交叉编译MNN失败:(

D2: 开发环境搭建

因为是为了兴趣而做的小开发,平时又太忙,基本都是零碎时间来敲代码,所以目标是在平时办公的装Windows10的笔记本上搭建开发环境,如果是Linux应该会方便很多。

1. 启动WSL2

开启虚拟机平台

用管理员权限打开PowerShell,运行以下命令。或者新建WSL2.bat脚本,以管理员权限运行。

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

安装WSL2内核

下载WSL2内核更新包,相关说明可以查阅微软的文档

重启系统后,用管理员权限打开PowerShell,运行以下命令,将WSL2设置为默认版本

1
wsl --set-default-version 2

2. 安装DOCKER

安装

我安装的是Docker Desktop 3.5.1,直接下载安装即可,注意勾选“Use WSL 2 based engine”选项。我的系统是家庭版,默认勾选此选项。

Docker Desktop

修改镜像存储位置(可选操作)

由于系统盘空间有限,将Docker的默认根目录调整到数据盘。

  1. 退出Docker Desktop

  2. 确认所有WSL应用已退出,所有应用都应该是stop状态

    1
    wsl --list -v
  3. 迁移docker-desktop

    1
    2
    3
    wsl --export docker-desktop "D:\DOCKER-ENGINE\docker-desktop.tar"
    wsl --unregister docker-desktop
    wsl --import docker-desktop D:\DOCKER-ENGINE\run "D:\DOCKER-ENGINE\docker-desktop.tar" --version 2
  4. 迁移docker-desktop-data

    1
    2
    3
    wsl --export docker-desktop-data "D:\DOCKER-ENGINE\docker-desktop-data.tar"
    wsl --unregister docker-desktop-data
    wsl --import docker-desktop-data D:\DOCKER-ENGINE\data "D:\DOCKER-ENGINE\docker-desktop-data.tar" --version 2

3. 使用Ubuntu 18.04镜像建立开发容器

建立基础容器

  1. Docker Hub上直接拉取镜像

    1
    docker pull ubuntu:18.04
  2. 启动容器

    1
    docker run -it -v D:\DOCKER-SHARE:\data --name toy-project ubuntu:18.04 bash

基础环境安装

  1. 更新源

    1
    apt-install update
  2. 安装开发基础库

    1
    apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools gcc-arm-linux-gnueabihf libssl-dev liblz4-tool genext2fs lib32stdc++6 gcc-aarch64-linux-gnu g+conf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib libssl-dev texinfo fakeroot libparse-yapp-perl default-jre patchutils lib32gcc-7-dev g++-7 libstdc++-7-dev
  3. 使用交叉编译工具链

    下载工具链,我用的是Linaro工具链,按常规方式编译程序,例如MNN的示例是

    1
    2
    3
    4
    5
    6
    7
    8
    9
    export cross_compile_toolchain=linaro/aarch64
    mkdir build && cd build
    cmake .. \
    -DCMAKE_SYSTEM_NAME=Linux \
    -DCMAKE_SYSTEM_VERSION=1 \
    -DCMAKE_SYSTEM_PROCESSOR=aarch64 \
    -DCMAKE_C_COMPILER=$cross_compile_toolchain/bin/aarch64-linux-gnu-gcc \
    -DCMAKE_CXX_COMPILER=$cross_compile_toolchain/bin/aarch64-linux-gnu-g++
    make -j4