当前位置: 首页 > news >正文

openEuler Embedded 的 Yocto入门 : 2. 构建一个Hello,world!

获取BitBake

  1. 官方下载
git clone https://git.yoctoproject.org/poky
cd poky/bitbake
  1. 国内镜像下载(推荐)
git clone https://gitee.com/openeuler/yocto-poky.git -b v3.3.6
cd yocto-poky/bitbake

配置BitBake环境

export PATH=/path/to/bitbake/bin:$PATH
bitbake --version  # 验证安装
# 预期输出:BitBake Build Tool Core version 1.50.0

Hello World示例

1. 创建工程目录
mkdir $HOME/hello
cd $HOME/hello
2. 创建基础配置文件
mkdir conf
touch conf/bitbake.conf
3. 创建必需类文件
mkdir classes
touch classes/base.bbclass
4. 配置核心变量

编辑 conf/bitbake.conf添加:

TMPDIR  = "${TOPDIR}/tmp"
CACHE   = "${TMPDIR}/cache"
STAMP   = "${TMPDIR}/${PN}/stamps"
T       = "${TMPDIR}/${PN}/work"
5. 创建自定义层
cd $HOME/hello
mkdir meta-mylayer
cd meta-mylayer
mkdir conf

创建 conf/layer.conf

BBPATH .= ":${LAYERDIR}"
BBFILES += "${LAYERDIR}/recipes-*/*.bb"
BBFILE_COLLECTIONS += "mylayer"
BBFILE_PATTERN_mylayer := "^${LAYERDIR}/"
BBFILE_PRIORITY_mylayer = "5"

注意:层名称建议以 meta-开头

6. 创建Hello World配方

创建 recipes-hello/printhello.bb

DESCRIPTION = "Prints Hello World"
PN = "printhello"
PV = "1"python do_build() {bb.plain("********************")bb.plain("*                  *")bb.plain("*  Hello, World!   *")bb.plain("*                  *")bb.plain("********************")
}
addtask do_build
7. 配置层路径

创建 conf/bblayers.conf

BBLAYERS ?= " \/path/to/meta-mylayer \
"
8. 执行构建
cd $HOME/hello
bitbake printhello
成功输出
********************
*                  *
*  Hello, World!   *
*                  *
********************

最终目录结构

hello/
├── classes
│   └── base.bbclass
├── conf
│   ├── bblayers.conf
│   └── bitbake.conf
└── meta-mylayer/├── conf│   └── layer.conf└── recipes-hello└── printhello.bb

关键概念说明

  1. bitbake.conf

Yocto底层配置文件,定义构建核心变量

  1. base.bbclass

任务处理基类,提供通用任务实现

  1. bblayers.conf

层管理系统,定位工程构建层

  1. layer.conf

层元数据定义文件


常见问题排查

错误信息解决方案
ModuleNotFoundError: No module named 'bb'检查BitBake路径配置和环境变量
Could not inherit file classes/base.bbclass创建classes/base.bbclass文件
No setscene tasks正常信息,无需处理
Nothing PROVIDES 'printhello'检查bblayers.conf路径配置

调试提示:删除tmp目录可强制重新执行任务


参考文献

  • poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.rst
  • poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst

🚀 动手实践:基于 openEuler Embedded 的 Yocto 入门
接下来将带您逐步实现:
在这里插入图片描述
👉 立即点击关注,解锁嵌入式开发新技能!
👍 一键三连获取完整代码模板与构建加速技巧!
✨ 感谢您的支持,我们即刻启程!

http://www.dtcms.com/a/352627.html

相关文章:

  • PWM控制实现呼吸灯
  • 基于CentOS7:Linux服务器的初始化流程
  • 基于51单片机的指纹红外密码电子锁
  • 【Elasticsearch】k-NN 搜索深度解析:参数优化与分数过滤实践
  • Pascal使用TMediaPlayer播放MIDI文件时的错误
  • 红外遥控模块
  • 逻辑流图、作业图、执行图、物理图
  • 嵌入式软件移植
  • 【制作100个Unity游戏】从零开始构建类《月圆之夜》《杀戮尖塔》的卡牌游戏(附带项目源码)
  • Windows远程协助安全配置与使用限制
  • STM32G4 SVPWM VF开环强拖电机
  • 2026 届最新大数据专业毕设选题推荐,毕业设计题目汇总
  • 达索 Enovia 许可管理技术白皮书:机制解析与智能优化实践
  • 段式存储、页式存储、段页式存储:三种内存管理策略的演进与权衡
  • PyTorch生成式人工智能——PatchGAN详解与实现
  • Docker实战系列:使用Docker部署YouTrack项目管理系统
  • Linux修改bootflag(启动标签)到指定分区
  • RedHat 5.7升级为PAE内核,并更新yum源
  • 软件产品线过程模型全景解析:双生命周期、SEI 与三生命周期
  • 《数据之心》——鱼小妖全传
  • 数据结构07(Java)-- (堆,大根堆,堆排序)
  • JHipster 一个基于 Yeoman 的全栈应用生成器
  • 常见软件优化功能项
  • More Effective C++ 条款09:使用析构函数防止资源泄漏
  • 用友NCC 如何通过OpenApi 上传附件
  • 【计组】总线与IO
  • 【C++】智能指针底层原理:引用计数与资源管理机制
  • 菜鸡还没有找到工作(DAY41)
  • 永磁同步电机无速度算法--高频脉振正弦波注入到两相静止坐标系
  • 全新机器人遥操作触觉感知解决方案