我正试图在我的yocto形象中添加devmem。我这样做--我运行命令
bitbake -c menuconfig busybox我会转到杂项工具并在devmem菜单中放置一个*。退出并保存配置,然后执行
bitbake busybox紧接着是
bitbake core-image-full-cmdline当我引导我的设备时,devmem程序不在那里,当我重新运行menuconfig for busybox时,devmem选项不再被选中!我能做些什么来解决这个问题?
发布于 2022-02-06 07:47:04
Busybox和其他项目一样,使用.config来定义需要编译到最终输出中的特性,就像Linux内核和U引导等等。
那么,在Yocto如何处理这些问题:
当你跑步时:
bitbake busybox -c menuconfig它将运行make menuconfig到其工作目录,并为您打开配置菜单。
现在,如果您保存并退出,只会更改工作目录中的.config,这意味着如果再次解压缩,您的修改将丢失。
此外,当您通过.config更改menuconfig时,您需要强制编译busybox食谱,因为对于bitbake已经构建了:
bitbake busybox -c compile -f但是,关于最佳实践,如果您希望您的修改成为您可以轻松启用或禁用的功能,那么在这里我向您建议:
运行:bitbake busybox -c menuconfig
bitbake busybox -c diffconfigdiffconfig命令将为您提供一个fragment.cfg文件,其中包含您刚才所做的修改。
该文件应包括:
CONFIG_DEVMEM=y对碎片的快速解释:
当您打开menuconfig时,它会将.config备份到.config.old,然后diffconfig会在将修改保存到.config之后给出它们之间的区别。
现在,Busybox和其他使用配置文件的菜谱一样,他们明白如果工作目录中存在.cfg文件,那么在编译之前,他们需要将它应用到主.config文件中。
因此,在获得fragment.cfg之后,您需要做的是在自定义菜谱中为busybox创建一个.bbappend菜谱,并指定您的新片段:
meta-custom/
| recipes-core/
| busybox/
| busybox_%.bbappend
| busybox/
| devmem.cfg现在,busybox_%.bbappend包含:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://devmem.cfg"现在,当您再次重新烘焙Busybox时,它将解压碎片并应用它。
要检查bitbake完成后是否应用了该片段,您可以检查.config文件:
的构建目录路径
bitbake -e busybox | grep ^B=CONFIG_DEVMEM的
grep CONFIG_DEVMEM <path_of_previous_command>/.config你应该看到:
CONFIG_DEVMEM=yhttps://stackoverflow.com/questions/70988451
复制相似问题