bitbake-用于嵌入式Linux的类似make的构建工具

简介: 从根本上讲,BitBake是一个通用的任务执行引擎,它使Shell和Python任务可以在复杂的任务间依赖关系约束内有效地并行运行。BitBake的主要用户之一OpenEmbedded以此内核为基础,并使用面向任务的方法构建嵌入式Linux软件堆栈。从概念上讲,BitBake在某些方面类似于GNU Make,但有很大的区别:

bitbake介绍

从根本上讲,BitBake是一个通用的任务执行引擎,它使Shell和Python任务可以在复杂的任务间依赖关系约束内有效地并行运行。BitBake的主要用户之一OpenEmbedded以此内核为基础,并使用面向任务的方法构建嵌入式Linux软件堆栈。
20181014121758556.png

从概念上讲,BitBake在某些方面类似于GNU Make,但有很大的区别:

  • *BitBake根据提供的构成任务的元数据执行任务。元数据存储在配方(.bb),配置(.conf)和类(.bbclass)文件中,并向BitBake提供有关要运行哪些任务以及这些任务之间的依赖关系的说明。
    *
  • BitBake包含一个提取程序库,用于从各种位置(例如源代码控制系统或网站)获取源代码。
  • 每个要构建的单元的指令(例如,一个软件)被称为配方文件,其中包含有关该单元的所有信息(依赖关系,源文件位置,校验和,描述等)。
  • BitBake包含客户端/服务器抽象,可以从命令行使用,也可以通过XMLRPC用作服务,并且具有多个不同的用户界面。

概念

BitBake是用Python语言编写的程序。在最高级别,BitBake解释元数据,确定要运行的任务并执行这些任务。与GNU Make相似,BitBake控制软件的构建方式。GNU Make通过“ makefiles”实现其控制。BitBake使用“食谱”。

通过允许完成更复杂的任务(例如,组装整个嵌入式Linux发行版),BitBake扩展了GNU Make这样的简单工具的功能。

获取BitBake

您可以通过几种不同的方式获得BitBake:

克隆BitBake:使用Git克隆BitBake源代码存储库是获得BitBake的推荐方法。克隆存储库可轻松获得错误修复,并可以访问稳定分支和master分支。克隆BitBake之后,应该使用最新的稳定分支进行开发,因为master分支用于BitBake开发,并且可能包含不太稳定的更改。

通常,您需要一个与您使用的元数据相匹配的BitBake版本。元数据通常向后兼容但不向前兼容。

这是克隆BitBake存储库的示例:

 $ git clone git://git.openembedded.org/bitbake

您也可以通过网盘下载BitBake的源代码。

例子

下面提供一些示例,展示如何使用BitBake。

针对单个配置执行任务

对单个配置文件执行任务相对简单。您指定有问题的文件,然后BitBake解析该文件并执行指定的任务。如果您未指定任务,则BitBake将执行默认任务“build”。

以下命令在foo_1.0.bb 配置文件上运行构建任务,这是默认任务:

     $ bitbake -b foo_1.0.bb

以下命令在foo.bb配置文件上运行clean任务 :

      $ bitbake -b foo.bb -c clean

用法

详细的用法,可以查看官方使用手册:www.yoctoproject.org/docs/1.6/bitbake-user-manual/bitbake-user-manual.html

相关文章
|
8天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
61 13
|
6月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
200 1
|
2月前
|
Linux 开发工具
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
|
4月前
|
编译器 Linux 程序员
深度探索Linux操作系统 —— 构建工具链
深度探索Linux操作系统 —— 构建工具链
69 5
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
152 3
|
4月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
219 0
|
5月前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
**嵌入式Linux学习误区摘要** 1. **过度聚焦桌面Linux** - 许多学习者误将大量时间用于精通桌面Linux系统(如RedHat、Fedora、Ubuntu),认为这是嵌入式Linux开发的基石。 - 实际上,桌面Linux仅作为开发工具和环境,目标不应是成为Linux服务器专家,而应专注于嵌入式开发工具和流程。 2. **盲目阅读Linux内核源码** - 初学者在不了解Linux基本知识时试图直接研读内核源码,这往往导致困惑和挫败感。 - 在具备一定嵌入式Linux开发经验后再有针对性地阅读源码,才能有效提升技能。
|
6月前
|
Linux 开发工具 数据安全/隐私保护
Linux基础——Linux开发工具(下)_make/makefile
Linux基础——Linux开发工具(下)_make/makefile
55 1
|
5月前
|
Java Linux C++
【Linux】Make和Makefile快速入门
【Linux】Make和Makefile快速入门
37 0
|
6月前
|
消息中间件 安全 Java
【嵌入式软件工程师面经】Linux多进程与多线程
【嵌入式软件工程师面经】Linux多进程与多线程
82 1