【问题标题】:yocto: how do I install header files along with kernel module in sdkyocto:如何在 sdk 中安装头文件和内核模块
【发布时间】:2020-07-01 22:54:10
【问题描述】:

为什么在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 

但是,当我运行 qemu 或在 SDK 中时,找不到文件 test.h

【问题讨论】:

  • 您能否提供更多详细信息,图片中是否包含此食谱?
  • @md.jamal 配方已包含在内,并且 .ko 文件已正确安装。但是任何其他文件,例如 test.h 都不是
  • 你检查过tmp里面的图片文件夹吗
  • @md.jamal 我在这里找到它:./tmp/sysroots-components/qemuarm/char-drv-ll/usr/include/char-drv-ll/test.h ./tmp/工作/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

标签: linux yocto kernel-module


【解决方案1】:

默认情况下,只有在需要构建另一个包时才会将包包含在 SDK 中。例如。如果您正在构建一个应用程序,它的DEPENDs 将包含在 SDK 中,而不是应用程序本身。

但是,您可以使用 TOOLCHAIN_HOST_TASKTOOLCHAIN_TARGET_TASK 变量将包显式添加到 SDK。 (记住SDK有原生和交叉编译部分)

例子:

TOOLCHAIN_HOST_TASK_append = " nativesdk-mypackagename-dev"
TOOLCHAIN_TARGET_TASK_append = " mypackagename-dev"

如果您需要添加多个包,我建议您将它们分组到包组中(例如nativesdk-packagegroup-mylayer-toolchain-host.bbpackagegroup-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一样烘焙它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 2021-06-14
    • 2021-12-23
    • 2012-03-10
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多