raidenawkward 发表于 2012-02-28 09:48

x86编译helloworld模块时遇到的问题 初学者求解答T_T

代码:
#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


报:
代码:
In file included from /usr/src/linux/include/linux/kernel.h:13:0,
               from /usr/src/linux/include/linux/cache.h:4,
               from /usr/src/linux/include/linux/time.h:7,
               from /usr/src/linux/include/linux/stat.h:60,
               from /usr/src/linux/include/linux/module.h:10,
               from hello.c:1:
/usr/src/linux/include/linux/linkage.h:5:25: fatal error: asm/linkage.h: 没有那个文件或目录


然后发现内核源码路径下/usr/src/linux/include/ 没有asm文件夹,但有asm-generic;于是把asm-generic软链成asm,再编译报:
代码:
In file included from /usr/src/linux/include/linux/preempt.h:9:0,
               from /usr/src/linux/include/linux/spinlock.h:50,
               from /usr/src/linux/include/linux/seqlock.h:29,
               from /usr/src/linux/include/linux/time.h:8,
               from /usr/src/linux/include/linux/stat.h:60,
               from /usr/src/linux/include/linux/module.h:10,
               from hello.c:1:
/usr/src/linux/include/linux/thread_info.h:53:29: fatal error: asm/thread_info.h: 没有那个文件或目录


所以觉得问题好像不是我想得这么简单
网上查了一圈,都是讲怎么编译的,没有我遇到的这个问题.

我在ubuntu 11.04, 内核3.2.6, gcc 4.5.2和fedora16, 内核3.2.7, gcc 4.6.7上试了效果一样

新人求解答啊 谢谢各位了

backcomer 发表于 2012-02-29 14:13

编译模块应该写Makefile的吧
页: [1]
查看完整版本: x86编译helloworld模块时遇到的问题 初学者求解答T_T