bitbake - 如何将文件添加到构建根文件系统?
问题描述
我在构建包时需要包含一个文件,但在运行时根本不需要文件本身。
我被告知要查看如何使用do_
函数来执行此操作,但无法在任何文档中找到合适的函数。我认为这可以很简单地完成,但只需指定要添加的文件。
同样,我不是在寻找将文件添加到最终图像的方法。这只是为了建造。
解决方案
这是有关任务的完整文档。它们都以 开头do_
,因此建议您扩展其中一个。此外(如文档中所写)包可能具有来自 classes - files 的其他任务,这些任务通过关键字.bbclass
应用于您的包的配方。inherit
要获得您的包任务的完整列表,请使用命令
bitbake -c listtasks <your package name>
实际上这种方式你只是调用do_listtasks
你的包的任务,do_listtasks
也是......一个任务)
所以.. 首先,您需要了解附加文件所需的任务。任务的名称非常简单,因此要在编译期间使用您的文件,您需要 taskdo_compile
等等。
现在,尚不清楚您将如何实际将文件添加到构建中,但看起来也以某种方式通过您的包的配方。这意味着您应该将文件放在files
配方旁边的文件夹中(有关于此文件夹命名的选项),而不是SRC_URI
像这样将文件添加到变量中:
SRC_URI = " \
.....
file://your-file-in-folder-files.ext \
.....
"
通过这样做,您告诉 bitbake 在任务期间将此文件附加到WORKDIR 。do_unpack
更多关于这方面的内容,尤其是在3.3.5中。
现在来回答你的问题))假设你需要在do_compile
任务期间使用你的文件,但在实际编译操作之前。比在你的食谱中扩展 do_compile 像这样:
do_compile_prepend() {
cp ${WORKDIR}/your-file-in-folder-files.ext ${S}/some/subpath/inside/sources
}
类似地,在一些实际任务操作之后对您的文件执行某些操作,请创建带_append
后缀的函数。例如,do_configure_append
或do_compile_append
。
这里WORKDIR是 Yoctobuild
目录下的某个文件夹,其中放置了构建包所需的所有包内容,S是一个特殊文件夹,其中包含下载和解压缩的源代码,WORKDIR
并且do_compile_prepend
(和其他)只是一个 bash 脚本。
还要考虑文件夹D(它也位于 下WORKDIR
)。它包含文件,实际上应该在图像创建期间进入结果图像。因此,如果您的文件以某种方式找到了生成图像的方法,请直接将其删除,D
如下所示:
do_install_append() {
rm -f ${D}/path/to/your/file/in/resulting/rootfs/your-file-in-folder-files.ext
}
嗯......这是更多的概述,而不是一个确切的答案,但希望这会有所帮助!
推荐阅读
- ibm-cloud - 如何扩展 IBM Watson Assistant 的示例项目以显示文本以外的答案?
- sharepoint - 如何在线访问“APP for Sharepoint”页面
- python - 在 Oracle 插入期间将“无”字符串转换为空
- javascript - Then() 在 React 中的调度操作之后不起作用
- bash - 执行命令后调试慢速 bash
- flutter - 使用 Cloud Firestore REST API 如何使用带有 http.post() 方法的 http 包发送数据
- r - R中并排的两个饼图
- angular - Searchable select options
- java - Android SwipeRefreshLayout 返回 null
- flutter - 你应该注入一个接口还是它的实现?