linux - yocto:如何在 sdk 中安装头文件和内核模块
问题描述
为什么在do_install之后,SDK中没有出现test.h?实际上它似乎无处不在。
do_install_append() {
install -d ${D}${includedir}/char-drv-ll
install -m 0755 ${S}/test.h ${D}${includedir}/char-drv-ll/test.h
}
RPROVIDES_${PN} += "kernel-module-char-drv-ll"
FILES_${PN} += "${includedir}/char-drv-ll/test.h"
编辑:这是在 poky 构建文件夹中查找的结果:
$ find -name test.h -and -path *char-drv-ll*
./tmp/sysroots-components/qemuarm/char-drv-ll/usr/include/char-drv-ll/test.h
./tmp/work/qemuarm-poky-linux-gnueabi/char-drv-ll/0.1-r0/package/usr/include/char-drv-ll/test.h
./tmp/work/qemuarm-poky-linux-gnueabi/char-drv-ll/0.1-r0/image/usr/include/char-drv-ll/test.h
./tmp/work/qemuarm-poky-linux-gnueabi/char-drv-ll/0.1-r0/sysroot-destdir/usr/include/char-drv-ll/test.h
./tmp/work/qemuarm-poky-linux-gnueabi/char-drv-ll/0.1-r0/test.h
./tmp/work/qemuarm-poky-linux-gnueabi/char-drv-ll/0.1-r0/packages-split/char-drv-ll-dev/usr/include/char-drv-ll/test.h
test.h
但是,当我运行 qemu 或在 SDK 中时,找不到该文件。
解决方案
默认情况下,只有在需要构建另一个包时才会将包包含在 SDK 中。例如,如果您正在构建一个应用程序,它DEPEND
的 s 将包含在 SDK 中,而不是应用程序本身。
但是,您可以使用TOOLCHAIN_HOST_TASK
和TOOLCHAIN_TARGET_TASK
变量将包显式添加到 SDK。(记住SDK有原生和交叉编译部分)
例子:
TOOLCHAIN_HOST_TASK_append = " nativesdk-mypackagename-dev"
TOOLCHAIN_TARGET_TASK_append = " mypackagename-dev"
如果您有多个需要添加的包,我建议您将它们分组到包组中(例如nativesdk-packagegroup-mylayer-toolchain-host.bb
和packagegroup-mylayer-toolchain-target.bb
)
示例packagegroup-mylayer-toolchain-target.bb
:
DESCRIPTION= "Packages for the target part of the SDK"
inherit packagegroup
RDEPENDS_${PN} = ...the packages you want to add...
然后创建一个classes/populate_sdk_mylayer.bbclass
:
TOOLCHAIN_HOST_TASK_append = " nativesdk-packagegroup-sdk-host nativesdk-packagegroup-mylayer-toolchain-host"
TOOLCHAIN_TARGET_TASK_append = " packagegroup-mylayer-toolchain-target"
然后你可以像烤bitbake -c populate_sdk_mylayer myimage
推荐阅读
- elasticsearch - Nest 无法解析 ElasticsearchService 的依赖关系
- azure-functions - azure javascript 函数绑定的文档或源代码?
- gradle - 构建 Gradle 项目的问题:错误消息“org.gradle.api.internal.tasks.DefaultSourceSetOutput 类型的功能测试类”
- azure-functions - vpn 中存在的事件网格订阅 webhook
- android - RecyclerView:使用 RxJava 在后台进行计算工作
- c# - C#如何在WPF中取消上一个按钮单击事件处理程序
- centos - 将 KVM 虚拟机导出到 HyperV
- postman - sendRequest 似乎没有使用我在测试中指定的标头值
- c# - 如何通过代码隐藏将多个 div 添加到现有的父 div
- three.js - 在 ThreeJS 中画线