Skip to content

# 2. 开发环境准备

源码仅支持使用docker容器进行编译和打包，工具链在docker镜像中集成，需准备运行docker容器的宿主机以及docker镜像。

客户源码使用AppSDK编译应用程序时，可以使用AppSDK里面带的工具链。

开发环境版本推荐：

- 宿主机版本：>= ubuntu22.04

- docker版本：>= 24.0.0

## 2.1. Docker 宿主机环境准备

备注

docker daemon需要运行在root模式下，不支持以rootless的模式运行。

以ubuntu22.04操作系统的宿主机为例，需更新apt源并安装相关工具：

    sudo apt update
    sudo apt install -y repo make gcc docker.io qemu-user-static

将用户加入docker组:

    sudo usermod -aG docker xxxx

## 2.2. Docker 镜像准备

外部客户从SDK包中获取编译docker镜像包build_docker_image.tar，使用如下命令加载到docker中：

    docker load -i build_docker_image.tar

使用docker images命令可以看到docker.hobot.cc/systemsoft/devenv/debian-12:latest已经载入。

## 2.3. AppSDK编译应用程序

以下是以debian 12 docker环境gcc-aarch64-linux-gnu 12.2交叉编译工具链编译出来的AppSDK目录结构：

> ├── appuser

> │ ├── hbrootfs-sdk_0.0.1.20240603_all.deb

> │ └── rootfs-sdk-focal_0.0.1.20240603_all.deb

> ├── README.md

> └── toolchain

> │ └── aarch64-linux-hb-gcc_12.2.0_amd64.deb

其中hbrootfs-sdk_0.0.1.20240603_all.deb是地平线自己的库和头文件，rootfs-sdk-focal_0.0.1.20240603_all.deb是系统库，aarch64-linux-hb-gcc_12.2.0_amd64.deb是gcc 12.2.0工具链，目前在ubuntu22.04非docker环境下运行正常。其它环境不能保证。

工具链和库都可以通过dpkg-deb -x命令进行解压，以下是工具链的解压和环境变量的设置

    dpkg-deb -x aarch64-linux-hb-gcc_12.2.0_amd64.deb ./
    export CROSS_COMPILE=${PWD}/arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-linux-gnu-