小编Rai*_*ard的帖子

模块编译:找不到asm/linkage.h文件

我正在尝试编译"hello world"内核模块的示例,在ubuntu 11.04,内核3.2.6,gcc 4.5.2和fedora 16,内核3.2.7,gcc 4.6.7上发现问题.

码:

#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);
Run Code Online (Sandbox Code Playgroud)

编译:

gcc -D__KERNEL__ -I /usr/src/linux/include/ -DMODULE -Wall -O2 -c hello.c -o hello.o
Run Code Online (Sandbox Code Playgroud)

错误:

在/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',并编译了agail:

这次错误是:

在/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

linux kernel kernel-module linux-kernel

12
推荐指数
1
解决办法
4万
查看次数

标签 统计

kernel ×1

kernel-module ×1

linux ×1

linux-kernel ×1