Yocto修改源代码后重建图像

时间:2019-05-28 22:34:13

标签: yocto bitbake openembedded

在对驱动程序源代码进行一些修改后,如何重建映像?

我尝试了bitbake -f -c编译和bitbake,但是我无法在驱动程序中找到修改后的设置。有人可以告诉我如何使用修改后的代码重建图像。

3 个答案:

答案 0 :(得分:0)

我猜您想重新生成整个图像,不是吗?如果是这样,您可以尝试使用以下命令来确保bitbake不会使用状态缓存:

bitbake image-name -c cleansstate && bitbake image-name

在您只想重建内核的情况下,将 image-name 替换为 virtual / kernel (或要重建的任何配方的名称)。 / p>

请注意,do_cleansstate任务将删除配方$ {WORKDIR}!

有关更多信息:https://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html#ref-tasks-cleansstate

如果您直接在$ {WORKDIR}中进行此类修改,除非您正在测试,否则不应该这样做,只需执行以下命令即可:

bitbake virtual/kernel -f -c compile && bitbake virtual/kernel

答案 1 :(得分:0)

如果您不是直接在$ {WORKDIR}中进行修改,则必须将SRCREV设置为新的哈希并增加PR。然后输入命令

bitbake <image-name>

哪个会再次编译一个程序包,并根据您的更改创建新映像。

如果您在$ {WORKDIR}中进行了更改,请添加,提交并推送到您的存储库,然后按照我上面的步骤进行操作。这是最干净的解决方案。

其他解决方案建议的命令:

bitbake <image-name> -c cleansstate 

将导致所有软件包重新生成,如果没有状态镜像,这将花费很长时间。

答案 2 :(得分:0)

由于清理后将重写 $ {WORKDIR} 中的更改,因此您可以通过命令devtool modify <recipe-name>

将代码放入外部工作区

默认情况下,您的配方代码将放入tmp / workspace / source /目录 现在,您可以自由地修改代码,只需像往常一样使用bitbake <recipe-name>进行构建即可。

修改成功后,您可以轻松地将更改另存为原始配方代码的补丁(只要它可能是开源的并已下载):

  • 在工作区中提交更改
  • 为了自动创建补丁并将其附加到配方使用命令devtool recipe-update -a <layer-path> <recipe-name>