代码:
#include <linux/module.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");
static int __init hello_init (void)
{
printk("Hello module init\n");
return 0;
}
static void __exit hello_exit (void)
{
printk("Hello module exit\n");
}
module_init(hello_init);
module_exit(hello_exit);
编译时使用的:
gcc -D__KERNEL__ -I /usr/src/linux/include/ -DMODULE -Wall -O2 -c hello.c -o hello.o
错误信息:
在文件/usr/src/linux/include/linux/kernel.h:13:0中包含, 来自/usr/src/linux/include/linux/cache.h:4, /usr/src/linux/include/linux/time.h:7, /usr/src/linux/include/linux/stat.h:60, /usr/src/linux/include/linux/module.h:10, hello.c:1: /usr/src/linux/include/linux/linkage.h:5:25: 致命错误: asm/linkage.h: 没有那个文件或目录
然后我发现在/usr/src/linux/include/中没有名为'asm'的文件夹,但有'asm-generic'; 所以我创建了一个符号链接'asm'指向'asm-generic',再次编译:
这一次错误变成:
在文件/usr/src/linux/include/linux/preempt.h:9:0中包含, 来自/usr/src/linux/include/linux/spinlock.h:50, /usr/src/linux/include/linux/seqlock.h:29, /usr/src/linux/include/linux/time.h:8, /usr/src/linux/include/linux/stat.h:60, /usr/src/linux/include/linux/module.h:10, hello.c:1: /usr/src/linux/include/linux/thread_info.h:53:29: 致命错误: asm/thread_info.h: 没有那个文件或目录
所以我意识到我错了,但是为什么呢?T_T