4. 开发环境搭建

i.MX8 的 BSP 开发几乎全部在 Linux 主机上完成,官方推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS(64 位)。主机环境是否干净、依赖是否齐全、工具链路径是否正确,直接决定后续 Yocto 构建、内核编译和设备树修改能否一次通过。本节按“主机准备 → 依赖安装 → repo 拉取 → 工具链安装 → 环境变量固化”的顺序,把这条链路一次讲透。

一、核心原理:为什么需要这样一套环境

i.MX8 的 BSP 由 Yocto Project 驱动,构建过程会调用大量宿主机工具(如 gcc、make、python3、git、tar、wget、chrpath、diffstat 等)。这些工具版本不匹配时,BitBake 会在解析阶段直接报错。因此第一步不是急着拉代码,而是把宿主机“喂饱”。

其次,i.MX8 是 ARM64 架构,宿主机是 x86_64,必须使用交叉编译工具链(如 aarch64-poky-linux-gcc)才能生成目标板可执行文件。工具链既可由 Yocto 构建产生,也可直接使用 NXP 官方发布的 SDK。无论哪种方式,都需要把工具链的 bin 目录加入 PATH,并设置 ARCH、CROSS_COMPILE 等变量,否则内核和 U-Boot 编译会找不到编译器。

i.MX8 BSP 开发环境搭建链路 Ubuntu 主机 20.04 / 22.04 LTS x86_64 · 磁盘 ≥ 120G 内存 ≥ 16G · 联网 依赖包安装 build-essential git / python3 / chrpath diffstat / gawk / wget repo 工具 repo init -u ... repo sync -j8 多仓库统一管理 交叉工具链 aarch64-poky -linux-gcc SDK 或 Yocto 生成 环境变量固化(~/.bashrc 或 SDK 环境脚本) export ARCH=arm64 export CROSS_COMPILE=aarch64-poky-linux- export PATH=$PATH:/opt/fsl-imx-xwayland/.../bin 验证:aarch64-poky-linux-gcc -v 能输出版本信息 bitbake core-image-minimal 可正常解析并开始构建

二、方法流程:五步完成环境搭建

  1. 主机准备:安装 Ubuntu 20.04/22.04,建议单独划分 /home 分区,预留 120GB 以上空间;关闭自动休眠,避免长时间构建中断。
  2. 依赖安装:执行官方推荐的 apt 安装命令,一次性补齐 Yocto 所需工具。
  3. repo 拉取:安装 repo 工具,初始化 NXP BSP 清单并同步源码。
  4. 工具链安装:安装 NXP 官方 SDK 或使用 Yocto 生成的工具链。
  5. 环境变量设置:把工具链路径和交叉编译变量写入 shell 配置,并验证生效。

三、关键命令与配置

依赖包安装是第一步,也是最容易漏项的一步。以下命令覆盖了 Yocto 构建所需的核心依赖:

sudo apt update
sudo apt install -y gawk wget git diffstat unzip texinfo gcc build-essential \
  chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
  iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
  pylint xterm zstd liblz4-tool file locales
sudo locale-gen en_US.UTF-8

repo 工具用于管理 NXP BSP 的多个 Git 仓库。安装与初始化方式如下:

mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH

mkdir ~/imx8-bsp && cd ~/imx8-bsp
repo init -u https://source.codeaurora.org/external/imx/imx-manifest \
  -b imx-linux-kirkstone -m imx-5.15.71-2.2.0.xml
repo sync -j8

工具链安装推荐直接使用 NXP 官方 SDK,解压后执行环境脚本即可:

chmod +x fsl-imx-xwayland-glibc-x86_64-meta-toolchain-aarch64-imx8mmevk-toolchain-5.15.71.sh
./fsl-imx-xwayland-glibc-x86_64-meta-toolchain-aarch64-imx8mmevk-toolchain-5.15.71.sh
source /opt/fsl-imx-xwayland/5.15.71/environment-setup-aarch64-poky-linux
执行 environment-setup-aarch64-poky-linux 后,脚本会自动导出 CC、CXX、ARCH、CROSS_COMPILE、PATH 等变量。建议把 source 这一行写入 ~/.bashrc,避免每次开终端都要手动执行。

四、环境变量清单与验证

变量名 典型值 作用
ARCH arm64 指定目标架构,内核编译时使用
CROSS_COMPILE aarch64-poky-linux- 交叉编译器前缀,内核/U-Boot 编译依赖
PATH /opt/fsl-imx-xwayland/.../bin 让 shell 找到交叉编译工具
CC aarch64-poky-linux-gcc 指定 C 编译器
SDKTARGETSYSROOT /opt/.../sysroots/aarch64-poky-linux 目标根文件系统路径,链接库时使用

验证是否配置成功,可执行以下命令:

aarch64-poky-linux-gcc -v
echo $ARCH
echo $CROSS_COMPILE
which aarch64-poky-linux-gcc

若 gcc -v 能输出目标为 aarch64-poky-linux 的版本信息,说明工具链已可用。

五、常见误区与复盘

误区一:在 root 用户下构建 Yocto。BitBake 会拒绝以 root 身份运行,必须使用普通用户。
误区二:依赖包只装了一部分,构建到一半才报 chrpath not found。建议一次性执行完整 apt 命令。
误区三:把工具链路径写死在脚本里,换终端后失效。应写入 ~/.bashrc 或使用 SDK 环境脚本。
误区四:repo sync 中断后直接重跑,未清理残留。可先执行 repo sync -j8 --force-sync 再继续。

复盘建议:每完成一步都用一条命令验证。主机层用 lsb_release -a 确认版本;依赖层用 which chrpath 确认工具存在;repo 层用 repo status 确认仓库状态;工具链层用 aarch64-poky-linux-gcc -v 确认可用;环境变量层用 env | grep -E "ARCH|CROSS_COMPILE" 确认已导出。五步全部通过后,再进入 Yocto 构建阶段,可以避免绝大多数“环境问题”导致的构建失败。