修改源代码后 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>
如何在对驱动程序源代码进行一些修改后重建映像?
我试过 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>