资讯中心

yocto: 04-解剖 busybox.inc

📅 2026/9/29 8:17:32
yocto: 04-解剖 busybox.inc
摘要本文以busybox_1.36.1.bb为例系统解析 Yocto 项目中 recipe 文件的结构与工作机制。首先揭示.bb文件与.inc文件的分离设计.bb作为“版本层”仅包含版本特定配置而通用构建逻辑封装在.inc文件中通过require指令引入。接着深入讲解SRC_URI变量的作用与组成包括远程源码下载https://和本地补丁文件引用file://两种方式并解释${PV}等 BitBake 变量的解析过程。最后通过目录结构示例说明 recipe 文件与辅助文件的组织关系帮助读者建立对 Yocto/BitBake 构建系统文件组织方式的完整认知。很好。现在我们正式开始解剖 busybox_1.36.1.bb。先不要急着看后面的 200 多行。你贴出来的这一段其实已经能让我们建立一个非常重要的认识这个 .bb 文件本身并不完整。它只是 BusyBox recipe 的“版本层”。真正大量的通用逻辑在 busybox.inc 里。1. 第一行require busybox.increquire busybox.inc这是我们首先必须搞懂的。它相当于busybox_1.36.1.bb │ │ require ▼ busybox.inc可以把它暂时理解成把 busybox.inc 的内容纳入当前 recipe。所以你现在看到的busybox_1.36.1.bb实际上不是完整 recipe。它更像busybox.inc ↓ 通用 BusyBox 构建逻辑 busybox_1.36.1.bb ↓1.36.1 这个版本特有的源码、patch、配置这就是 Yocto 非常常见的组织方式2. 为什么要拆成 .inc .bb假设以后 BusyBox 有busybox_1.35.0.bb busybox_1.36.1.bb busybox_1.37.0.bb很多东西其实完全一样do_configure do_compile do_install PACKAGES FILES RDEPENDS...那么没必要每个 .bb 都重复写。于是这就是 .inc 的价值。3. 第二个核心SRC_URI接下来SRC_URIhttps://busybox.net/downloads/busybox-${PV}.tar.bz2;nametarball \ file://0001-depmod-Ignore-.debug-directories.patch \ file://busybox-udhcpc-no_deconfig.patch \ ... 这个变量极其重要。你可以先把它理解成告诉 BitBake“构建这个 recipe我需要哪些输入文件”这里有两类东西。3.1 第一类真正的 BusyBox 源码https://busybox.net/downloads/busybox这里的${PV}又是一个 BitBake 变量。对于busybox_1.36.1.bbBitBake 会得到PNbusybox PV1.36.1所以busybox-${PV}.tar.bz2最终就是busybox-1.36.1.tar.bz2也就是说busybox_1.36.1.bb ├── PNbusybox └── PV1.36.1 ▼ busybox-1.36.1.tar.bz2这就是我们前面从 recipe 文件名看到的busybox_1.36.1.bb ↑ PV4. file:// 又是什么意思比如file://busybox-udhcpc-no_deconfig.patch它不是从互联网下载。file:// 表示从 Yocto 的 recipe 文件搜索路径中找这个文件。所以你会在 BusyBox recipe 目录附近看到大量busybox/ ├── busybox_1.36.1.bb ├── busybox.inc ├── busybox-udhcpc-no_deconfig.patch ├── defconfig ├── mdev ├── mdev.conf ├── syslog.conf ├──...这就是为什么一个 .bb 文件旁边会有这么多辅助文件。5. 所以 SRC_URI 是什么我们可以画成

看完文章,想为自己的企业也做一次专业网站诊断?

尧图顾问免费为您评估现有网站,并给出建站/改版建议与报价方案。

免费获取方案