如何在同一仓库中实现Angstrom与Poky双构建环境?
解决Angstrom发行版构建Colibri-imx6镜像的配置问题
先直接给你明确答案:是的,你必须单独克隆Angstrom发行版的专属元数据层——因为Angstrom是基于Yocto Project的独立发行版,有自己的配置体系和元层集合,没法直接复用Poky的现有层来构建Angstrom镜像。下面是适配你Ubuntu 18.04 + Yocto Zeus环境的一步步配置指南:
1. 克隆Angstrom及相关依赖元层
针对Yocto Zeus(3.0)版本,你需要创建独立的Angstrom工作目录,并克隆对应分支的元层:
# 创建与Poky隔离的Angstrom工作目录 mkdir angstrom-zeus && cd angstrom-zeus # 克隆Angstrom核心元层(切换到zeus分支) git clone -b zeus meta-angstrom # 克隆OpenEmbedded核心依赖层(均切换到zeus分支) git clone -b zeus openembedded-core git clone -b zeus meta-openembedded # 克隆Toradex针对Zeus版本的BSP层(Colibri-imx6硬件必需) git clone -b zeus meta-toradex-nxp git clone -b zeus meta-toradex-bsp-common git clone -b zeus meta-freescale git clone -b zeus meta-freescale-3rdparty
注:以上均为官方公开仓库,你可以通过Angstrom和Toradex的官方代码托管渠道获取仓库地址。
2. 正确初始化Angstrom构建文件夹(build_angstrom)
不要手动创建build_angstrom后直接改配置,用Yocto的环境初始化脚本自动生成合规的构建结构:
# 进入OpenEmbedded核心目录,执行初始化脚本指定构建文件夹 cd openembedded-core source oe-init-build-env ../build_angstrom
这会自动生成build_angstrom文件夹,以及初始的local.conf和bblayers.conf配置文件。
3. 修改build_angstrom的核心配置
3.1 编辑local.conf
重点修改以下配置项,适配Colibri-imx6和你的环境:
# 指定目标硬件为Colibri-imx6 MACHINE = "colibri-imx6" # 设置发行版为Angstrom(核心配置,不能遗漏) DISTRO = "angstrom" # 适配Ubuntu 18.04的SDK和Python环境 SDKMACHINE = "x86_64" PYTHONBASE = "/usr/bin/python2.7" # 开启并行构建(可选,加速编译,根据你的CPU核心数调整) BB_NUMBER_THREADS = "8" PARALLEL_MAKE = "-j 8" # 指定内核版本为4.9(匹配你的需求) PREFERRED_VERSION_linux-imx = "4.9%"
3.2 编辑bblayers.conf
添加所有必需的元层,确保层路径正确:
BBLAYERS ?= " \ ${TOPDIR}/../openembedded-core/meta \ ${TOPDIR}/../meta-openembedded/meta-oe \ ${TOPDIR}/../meta-openembedded/meta-multimedia \ ${TOPDIR}/../meta-openembedded/meta-networking \ ${TOPDIR}/../meta-openembedded/meta-python \ ${TOPDIR}/../meta-angstrom \ # Toradex BSP相关层(Colibri-imx6必需) ${TOPDIR}/../meta-toradex-nxp \ ${TOPDIR}/../meta-toradex-bsp-common \ ${TOPDIR}/../meta-freescale \ ${TOPDIR}/../meta-freescale-3rdparty \ "
4. 解决之前手动改配置的报错原因
你之前修改local.conf后报错,大概率是以下几个问题:
- 缺少关键元层:没添加meta-angstrom或Toradex的BSP层,导致BitBake找不到Angstrom的发行版配置或硬件驱动配方。
- DISTRO配置错误:没设置
DISTRO = "angstrom",BitBake仍默认使用Poky的配置,和Angstrom的层产生冲突。 - 路径关联错误:手动创建的build文件夹没有正确关联Angstrom的层路径,BitBake无法定位到配方文件。
5. 多构建文件夹的隔离注意事项
为了确保Poky和Angstrom的构建环境完全不冲突:
- 分别在不同终端窗口初始化两个环境:Poky用
source poky/oe-init-build-env build_poky,Angstrom用上面的source openembedded-core/oe-init-build-env build_angstrom。 - 不要在同一个终端中切换两个环境,避免PATH、BBPATH等环境变量互相干扰导致构建失败。
完成以上配置后,你就可以在build_angstrom目录下执行bitbake core-image-minimal来构建Angstrom的测试镜像了。
内容的提问来源于stack exchange,提问作者abunickabhi
相关产品推荐
相关产品推荐

