修改源代码后 Yocto 重建图像

Yocto rebuild image after modifying source code

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

我试过 bitbake -f -c compile 和 bitbake 但我在驱动程序中找不到修改后的设置。谁能告诉我如何使用修改后的代码重建图像。

我猜你想要 re-generate 整个图像,是吗?如果是这样,您可以尝试以下命令以确保 bitbake 不会使用 sstate 缓存:

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

如果您只想重建内核,请将 image-name 替换为 virtual/kernel(或您要重建的任何配方的名称)。

请注意,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 -C compile (to invalidate the stamps and force all tasks starting from do_compile)

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

bitbake <image-name>

它会再次编译一个包并根据您的更改创建新图像。

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

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

bitbake <image-name> -c cleansstate 

将导致所有包重建,如果您没有 sstate 镜像,这可能需要很长时间。

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

将代码放入外部工作区

默认情况下,您的食谱代码将放入 tmp/workspace/source/ 目录 现在您可以自由修改您的代码并像往常一样使用 bitbake <recipe-name> 简单地构建。

当您的修改没问题时,您可以轻松地将更改保存为原始配方代码的补丁(尽可能 open-source 并下载):

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