Gstreamer yocto:重建项目的一部分

Gstreamer yocto:重建项目的一部分,gstreamer,yocto,Gstreamer,Yocto,我有一个项目正在使用yocto来构建包括gstreamer在内的库。我发现我需要修补一些gstreamer元素,从而用补丁创建新的bitbake配方 我通常必须以图像名称作为参数运行bitbake,这将重建整个yocto(相当长): 我如何重建我需要的部分而不是整个yocto? 我听说了,但我不知道如何使用它。当然,这很容易做到。只需指定要生成的配方,而不是图像名称,例如,如果它是您已更改的主gstreamer配方(至少在当前版本中称为gstreamer1.0): 请注意,命令行上预期的名称始终

我有一个项目正在使用yocto来构建包括gstreamer在内的库。我发现我需要修补一些gstreamer元素,从而用补丁创建新的bitbake配方

我通常必须以图像名称作为参数运行bitbake,这将重建整个yocto(相当长):

我如何重建我需要的部分而不是整个yocto?
我听说了,但我不知道如何使用它。

当然,这很容易做到。只需指定要生成的配方,而不是图像名称,例如,如果它是您已更改的主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