我有一个项目,使用yocto进行库的构建,包括gstreamer。我发现需要修补一些gstreamer元素,因此创建了新的bitbake配方并进行了修补。
通常我必须以镜像名称作为参数运行bitbake,这将重新构建整个yocto(这需要相当长的时间):
MACHINE=some_machine nice bitbake yocto-etc-etc
如何重建我所需的部分而不是整个yocto系统? 我听说过devtool,但我不确定如何使用它。
我有一个项目,使用yocto进行库的构建,包括gstreamer。我发现需要修补一些gstreamer元素,因此创建了新的bitbake配方并进行了修补。
通常我必须以镜像名称作为参数运行bitbake,这将重新构建整个yocto(这需要相当长的时间):
MACHINE=some_machine nice bitbake yocto-etc-etc
如何重建我所需的部分而不是整个yocto系统? 我听说过devtool,但我不确定如何使用它。
根据您的需求,可以向bitbake传递不同的命令。
要删除临时文件:
bitbake -c clean gstreamer
清除临时和 sstate 缓存(我最常使用的方法):
bitbake -c cleansstate gstreamer
要同时删除下载,并从do_fetch开始构建所有内容。
bitbake -c cleanall gstreamer
在完成这两种清理中的任何一种后,您可以简单地为指定的内容提供构建命令。
bitbake gstreamer
MACHINE=some-machine bitbake gstreamer1.0
MACHINE=xx bitbake -c package_write_ipk
,然后复制软件包并使用 ipkg install
进行安装 - 好吧,我不确定它是否真正起作用,因为我弄错了一些东西,但至少看起来很聪明,我将在某个时候进行测试。无论如何,感谢有用的信息,这就是正确的操作方式.. 它回答了我的问题,如何构建一个任务.. - nayanabitbake -c clean task
bitbake -c cleanall task
首先,您可以使用quilt或diff等工具在gstreamer上创建补丁...
将补丁放入您的meta层并包含它,SRC_URI += "file://xxxx.patch"。
确保已在配方的bbappend文件中添加了FILESEXTRAPATHS_PREPEND变量。
然后对包进行cleansstate操作。
bitabake gstreamer** -c cleansstate
bitabake gstreamer*** -c patch
然后进行组件的完整构建,接着构建最终目标。
# 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
for i in clean cleanall cleansstate;do bitbake -c ${i} gstreamer;done
MACHINE=some_machine nice bitbake yocto-etc-etc
通过提供配方名称和 bitbake 命令,您可以构建任何特定的配方。
例如,如果您想要构建 gstreamer。
poky/meta/recipes-multimedia/gstreamer1.0_1.16.3.bb
您可以使用以下命令
MACHINE=<your-machine-name> bitbake gstreamer1.0
cd build/tmp/work/armv5e-poky-linux-gnueabi/gstreamer1.0/1.16.3-r0/
在这里,您可以在src
目录中应用更改,并使用./temp/run.do_compile
进行编译,与整个构建时间相比,这将需要非常少的时间。