Gstreamer yocto:重建项目的一部分
我有一个项目正在使用yocto来构建包括gstreamer在内的库。我发现我需要修补一些gstreamer元素,从而用补丁创建新的bitbake配方 我通常必须以图像名称作为参数运行bitbake,这将重建整个yocto(相当长): 我如何重建我需要的部分而不是整个yocto?Gstreamer yocto:重建项目的一部分,gstreamer,yocto,Gstreamer,Yocto,我有一个项目正在使用yocto来构建包括gstreamer在内的库。我发现我需要修补一些gstreamer元素,从而用补丁创建新的bitbake配方 我通常必须以图像名称作为参数运行bitbake,这将重建整个yocto(相当长): 我如何重建我需要的部分而不是整个yocto? 我听说了,但我不知道如何使用它。当然,这很容易做到。只需指定要生成的配方,而不是图像名称,例如,如果它是您已更改的主gstreamer配方(至少在当前版本中称为gstreamer1.0): 请注意,命令行上预期的名称始终
我听说了,但我不知道如何使用它。当然,这很容易做到。只需指定要生成的配方,而不是图像名称,例如,如果它是您已更改的主gstreamer配方(至少在当前版本中称为gstreamer1.0): 请注意,命令行上预期的名称始终是配方名称或配方中提供的某个名称,而不是运行时包名称 关于devtool,它当然可以将您置于一个环境中,您可以更轻松地更改配方的源代码并从中生成补丁,但我们在这里讨论的实际构建部分并没有真正改变。您可以在中找到有关如何使用devtool的更多信息,也可以 清除:删除目标的所有输出文件 cleanall:删除目标的所有输出文件、共享状态缓存和下载的源文件,具体取决于更改
bitbake -c clean task
bitbake -c cleanall task
您可以根据需要向bitbake传递不同的命令 要移除温度,请执行以下操作:
bitbake -c clean gstreamer
要删除temp和sstate缓存(我使用最多):
删除下载,让我们从do_fetch和all开始构建
bitbake -c cleanall gstreamer
一旦您完成了这两个clean中适合您的一个,您就可以简单地为指定的
bitbake gstreamer
您还可以启动感兴趣的任务,例如: 如果只想应用修补程序,可以执行以下操作:
# Apply the patch you have located and sourced in SRC_URI variable previously
MACHINE=some_machine nice bitbake -c patch gstreamer
# Compile the recipe
MACHINE=some_machine nice bitbake -c compile gstreamer
# In case there are more necessary tasks, launch them as previous
现在,您可以获取生成的包,并将其传递给您的板(例如,通过ssh/serial(zmodem)),对其进行测试并重复,直到您喜欢结果,然后执行以下操作重新生成映像:
for i in clean cleanall cleansstate;do bitbake -c ${i} gstreamer;done
MACHINE=some_machine nice bitbake yocto-etc-etc
首先,您可以使用Cotton或diff等在gstreamer上创建修补程序 将补丁放入元层,并将其包含到,
SRC_URI+=”file://xxxx.patch“
确保已在配方的bbappend文件中添加FILEEXTRAPATH\U PREPEND变量
然后对软件包进行清洁状态
bitabake gstreamer** -c cleansstate
然后执行do_补丁操作并检查我们的补丁是否已正确应用
bitabake gstreamer*** -c patch
然后对组件进行完整构建,然后构建最终目标。sstate缓存将执行选择要重建和不重建的任务。所以这需要很长时间。如果您想了解更多关于devtool的信息。转到devday.yocto.link获取关于开发者日培训的power point。您可以重建gstreamer:bitbake-c clean&&bitbake-c gstreamer,然后将其包含到您的图像中:bitbake-c clean your image&&bitbake your image我总是需要rm-rf yocto/temp/stamps/target/module以及temp/work。。这是在做这件事吗。。顺便问一下,这和我的问题有什么关系?我问了关于建筑的事。。不管怎样谢谢你的有用信息抱歉,我忘了告诉你我是如何写的,然后构建了一个WALSO,所以我必须注意到,最后我使用了
MACHINE=xx bitbake-c package\u write\u ipk
,然后复制包并使用ipkg install
,我不确定它是否真的工作了,因为我弄乱了一些东西,但它看起来至少很智能,总有一天我会测试它。无论如何,谢谢你提供有用的信息,这是如何正确完成的。。它回答了我关于如何构建一个任务的问题。请注意,这是在构建一个配方-一个“任务”类似于do_compile或do_package_write_ipk,即构建配方所需执行的许多部分中的一部分。感谢您解释所有干净类型。。有时,当我使用cleanall时,包无法生成。。然后我还必须删除temp/work/*/package和temp/stamps/*/package中的包文件。。只有这样,它才能建立起来。。不确定原因(我手头没有错误)。。顺便说一句,您输入了s/remote/remove/。。
for i in clean cleanall cleansstate;do bitbake -c ${i} gstreamer;done
MACHINE=some_machine nice bitbake yocto-etc-etc
bitabake gstreamer** -c cleansstate
bitabake gstreamer*** -c patch