【发布时间】:2019-05-18 19:45:40
【问题描述】:
我已经使用 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
【问题讨论】:
-
您使用哪个工具链来编译模块?您是直接在 beagle 或主机设备上编译代码吗?如果您希望在 beagle 上编译模块,则需要确保使用 gcc 和 dev 目录构建 buildroot。如果您希望在主机上编译,请确保构建 buildroot 工具链并使用它来编译模块,通常在发生此类错误时它指向错误的工具链
-
感谢您的回答。起初我想在目标上构建,但无法让 gcc 在我的构建中“出现”。所以我使用 buildroot 创建的工具链进行 xcompile
-
顺便说一句,一个普通的 hello world c 应用程序在主机上编译并在目标上正确运行
标签: c linux kernel beagleboneblack buildroot