Yocto: как установить заголовочные файлы вместе с модулем ядра в SDK - PullRequest
1 голос
/ 20 марта 2020

Почему после do_install test.h не появляется в SDK? На самом деле он нигде не появляется.

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, хотя.

1 Ответ

1 голос
/ 02 апреля 2020

По умолчанию пакеты включены в SDK, только если они необходимы для создания другого пакета. Например, если вы создаете приложение, его DEPEND s будет включено в SDK, но не само приложение.

Однако у вас есть возможность явно добавлять пакеты в SDK с помощью TOOLCHAIN_HOST_TASK и * 1005. * переменные. (Помните, что в 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

...