我已经使用 buildroot 为 beaglebone black 构建了一个 Linux 内核。现在我想开发一个 hello world linux 内核模块应用程序:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
问题是我仍然缺少一些头文件。最终收集完所有内容后,我收到一个错误,指出代码无法编译(很多错误,不想全部粘贴)。我想知道的是我是否真的包含了正确的文件?目前我有:
/home/lukasz/brl/Machine/beaglebone/build/linux-headers-a75d8e93056181d512f6c818e8627bd4554aaf92/include
/home/lukasz/brl/Machine/beaglebone/build/uboot-2018.01/arch/x86/include
/home/lukasz/brl/Machine/beaglebone/build/linux-headers-a75d8e93056181d512f6c818e8627bd4554aaf92/arch/arm/include/generated
/home/lukasz/brl/Machine/beaglebone/build/linux-headers-a75d8e93056181d512f6c818e8627bd4554aaf92/arch/arm/include
/home/lukasz/brl/Machine/beaglebone/build/linux-a75d8e93056181d512f6c818e8627bd4554aaf92/include
对我来说有点奇怪的是,c 包含文件和 asm 文件如此分散在目录中。
我的Linux版本:
# uname -a
Linux buildroot 4.9.59 #1 SMP Fri Oct 5 11:55:54 CEST 2018 armv7l GNU/Linux
答案1
您没有提供有关如何构建 Linux 内核模块的足够详细信息。请按照以下网址的说明进行操作https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/kbuild/modules.txt学习如何构建内核模块。