bitbake依赖如何为源代码工作?

时间:2013-08-05 09:42:38

标签: build compilation dependencies openembedded bitbake

我是“bitbake”方式的初学者,我想知道在以下几种情况下,当建立一个包含数千个包的项目时会发生什么:

  1. 你咬完全图像(所有包裹)并成功完成。
  2. 您对包进行了更改 - 一些源代码(让我们称之为包“X”)
  3. 你再次咬完整一张图片。
  4. 在步骤3中重建了“X”?是否有必要增加PV和PR以重建“X”? “Y”包取决于“X”会发生什么?如果重建X也是“Y”重建?

    我知道如果修改.bb文件,则不会构建依赖包,因为会检查时间戳。源代码更改的机制是否相同? (这是一个QT项目btw,所以最后bitbake运行qmake-> make来进行编译)

    我正在使用bitbake版本1.13.2。

    由于

2 个答案:

答案 0 :(得分:4)

让我试着回答这个问题。例如,你有包X,Y和Z.假设X取决于Y,Y取决于包Z。

  1. 如果您正在执行“bitbake default-image-name”并且您正在构建为scratch(这意味着之前没有构建default-image-name中所需的包)。所以bitbake现在创建一个依赖树(你可以通过“bitbake -g PACKAGE_NAME”看到依赖树)。第一个包Z将构建,然后是Y,然后最终包X.

  2. 现在假设您已对X源代码进行了一些更改,并且在不增加X配方文件(x.bb)中的PR编号的情况下执行“bitbake X”,bitbake不编译更改再次。我的意思是说bitbake只是检查包版本和修订版(PV和PR)。这里我们有相同的Package版本(PV)和相同的Package Revision(PR),所以bitbake不再编译X包。

  3. 要在修改后编译包X,您需要将更改应用为修补程序。为此制作一个更改补丁(例如change.diff或change.patch),在X.bb文件中添加该条目(例如,参见其他配方文件)。之后,增加X.bb中的PR编号。

    现在“bitbake X”将再次构建X包。

    1. 这里当我们增加了X的PR时,只构建了X包。这里bitbake将检查已经构建且具有相同PR编号的依赖包Y和Z,它将使用已经构建的Y和Z包。

    2. 如果我们重建了Y包(你可以清理包bitbake -c clean package_name,如果不想增加PR号),默认情况下X包不会再生成,即使它依赖于收率

    3. 希望得到这个帮助。

答案 1 :(得分:0)

Bitbake依赖于其他系统进行编译,例如make。 make有能力检测包是否需要重新编译。这就是bitbake处理重新编译包的方式。