Я пытаюсь добавить пример внешнего модуля ядра hello-mod из meta-skeleton / recipes-kernel в мой образ, используя систему сборки Yocto.Однако, когда я пытаюсь скомпилировать его с помощью bitbake hello-mod
, на втором этапе происходит сбой, из-за чего у struct module
нет члена с именем name
в строке .name = KBUILD_MODNAME,
.Кажется, что struct module
не определяется, хотя linux / module.h был включен.Это общий код модуля, который, похоже, не компилируется:
#include <linux/module.h>
#include <linux/vermagic.h>
#include <linux/compiler.h>
MODULE_INFO(vermagic, VERMAGIC_STRING);
MODULE_INFO(name, KBUILD_MODNAME);
__visible struct module __this_module
__attribute__((section(".gnu.linkonce.this_module"))) = {
.name = KBUILD_MODNAME,
.init = init_module,
#ifdef CONFIG_MODULE_UNLOAD
.exit = cleanup_module,
#endif
.arch = MODULE_ARCH_INIT,
};
#ifdef RETPOLINE
MODULE_INFO(retpoline, "Y");
#endif
static const char __module_depends[]
__used
__attribute__((section(".modinfo"))) =
"depends=";
Я не вижу ничего плохого в журнале компиляции, make вызывается (правильно, насколько нам известно) с помощьюследующая строка:
make -C /path/to/poky-rocko/build/tmp/work-shared/duovero/kernel-source \
M=/path/to/poky-rocko/build/tmp/work/duovero-poky-linux-gnueabi/hello-mod/0.1-r0
и я могу подтвердить, что module.h существует в каталоге: / path / to / poky-rocko / build / tmp / work-shared/ duovero / kernel-source / include / linux
Так что у меня заканчиваются и я ищу идеи о том, как отладить эту проблему.Напомним, что это текущие версии слоев, ядра и т. Д..org
Буду признателен за любую помощь или подсказку!