Mic*_*ael 1 embedded-linux busybox bitbake yocto
我正在尝试将 devmem 添加到我的 yocto 图像中。我这样做我运行命令
bitbake -c menuconfig busybox
Run Code Online (Sandbox Code Playgroud)
我转到“杂项实用程序”并在 devmem 菜单中放置一个 *。退出并保存配置然后执行
bitbake busybox
Run Code Online (Sandbox Code Playgroud)
其次是
bitbake core-image-full-cmdline
Run Code Online (Sandbox Code Playgroud)
当我启动设备时,该devmem程序不存在,当我重新运行menuconfigbusybox 时,该devmem选项不再被选中!我可以做什么来解决这个问题?
Tal*_*LEM 17
Busybox就像其他项目一样,使用 a.config来定义需要编译到最终输出中的功能,就像 Linux 内核和 U-boot 等。
那么,在 Yocto 中如何处理它们:
当你跑步时:
bitbake busybox -c menuconfig
Run Code Online (Sandbox Code Playgroud)
它将运行make menuconfig到其工作目录并为您打开配置菜单。
现在,如果您保存并退出,则只会.config更改工作目录中的内容,这意味着如果配方再次解压,您的修改将丢失。
此外,当您更改.configvia时menuconfig,您需要强制编译配方busybox,因为对于bitbake它已经构建了:
bitbake busybox -c compile -f
Run Code Online (Sandbox Code Playgroud)
但是,对于最佳实践,如果您希望修改成为可以轻松从配方中启用或禁用的功能,我向您建议如下:
bitbake busybox -c menuconfigbitbake busybox -c diffconfig该diffconfig命令将为您提供一个fragment.cfg包含您刚刚所做的修改的文件。
该文件应包含:
CONFIG_DEVMEM=y
Run Code Online (Sandbox Code Playgroud)
关于该片段的快速解释:
当你打开menuconfig它时备份.config到.config.old,然后diffconfig将你的修改保存到后会给你它们之间的区别.config。
现在,Busybox 与其他使用配置文件的配方一样,它们知道如果.cfg文件存在于其工作目录中,则需要.config在编译之前将其应用到主文件。
因此,获取后您需要做的fragment.cfg是在自定义配方中创建一个.bbappend配方busybox并指定新片段:
meta-custom/
| recipes-core/
| busybox/
| busybox_%.bbappend
| busybox/
| devmem.cfg
Run Code Online (Sandbox Code Playgroud)
现在,busybox_%.bbappend包含:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://devmem.cfg"
Run Code Online (Sandbox Code Playgroud)
现在,当您再次重新 bitbake Busybox 时,它将解压片段并应用它。
要检查 bitbake 完成后是否应用了片段,您可以检查该.config文件:
bitbake -e busybox | grep ^B=
Run Code Online (Sandbox Code Playgroud)
grep CONFIG_DEVMEM <path_of_previous_command>/.config
Run Code Online (Sandbox Code Playgroud)
你应该看到:
CONFIG_DEVMEM=y
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |