openembedded中的bitbake

在使用bitbake时出现了许多错误,结合openembedded的使用手册和bitbake的usr manual来梳理一下这个过程
直接查看oe的中文手册,请查看:
http://blog.chinaunix.net/uid-25909619-id-3767317.html

省去源码git步骤,直接查看主要文件:

OE使用6个目录来存放bitbake元数据

  • conf
    目录用来保存bitbake.conf,机器和发行版的配置。bitbake启动的时候将会读取bitbake.conf文件并且还会包含其他的local.conf机器和发行版的配置文件。bitbake会在BBPATH变量里搜寻这些 文件。

  • classes 目录包含了bitbake
    bb类(bbclass)。这些类可以被.bb文件继承和使用(译者注:这个源于bitbake使用的python语言的类特性,可以提高代码的重用性和便于管理)。bitbake使用BBPATH变量搜寻这些类文件。

  • packages 目录存放的bitbake bb
    文件。每个软件包和任务我们给它分配一个目录。.bb文件是每个包的元数据信息,每个包的每个版本都会有一个独立的bb文件。

从这些文件中可以看出,bitbake是一个Python语言构造的工具程序。bitbake像GNU的make命令一样,解释着metadata,决定着那些编译任务的执行,如何构建build等。GNU的make使用makefile来实现控制编译,而bitbake使用recipes来实现。
分析bitbake recipes,可得bitbake通过扩展文件xxx.bb来实现整个操作,xxx.bb是metadata的基础性文件,xxx.bb提供以下功能:

  • 描述源文件的基本信息,例如author, homepage, license 等
  • 显示源文件的版本
  • 定义源文件的各种属性
  • 定义源文件获取路径和如何do fetch源码
  • 源码需要patches则寻找patches文件并应用
  • 如果配置源文件并编译源码,即do configure和do compile
  • 执行do install,安装到对象机并创建package

除了conf,classes,recipes等文件还有以下两种文件:

  • layers,可以实现独立的不同类型的定制。在metadata中越来越多的modular需要处理,layers可以定义单独一个项目在同一层面执行。
  • append files,以xxx.bbappend存在的文件是一个扩展文件,执行扩展或者覆盖recipes的任务。bitbake将append文件和bb文件联合执行,需要将append和bb文件定义为相同的文件名。当package源码不断更新时,引入%作为通用的可用版本号,例如xxx.1.1.%.append可以匹配xxx.1.1.1.bb,xxx.1.1.2.bb等版本

bitbake定义了许多命令可以通过bitbake -h查看。

bitbake是一个十分强大的工具集合,可以完成复杂的综合性任务,可以编译产出不同类型的packages,内核,软件开发kit,或者定制特定的可运行的linux image,包含bootloader,rootfs的系统镜像等,也可单独编译摸一个目标文件来获取相应的可执行文件。

基础性的metadata配置(来源于bitbake user manual)
bitbake最初执行的任务时查找和对比metadata中的各种配置。对于metadata的配置文件

未完待续,持续更新中。。。。。

你可能感兴趣的:(Python,Linux)