中国青基会

查看完整版本: 写module碰到的问题

magic 2008-12-10 15:35

写module碰到的问题

#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
{
        printk("<1>Hello World.\n");
        return 0;
}
void cleanup_module(void)
{
        printk("<1>Goodbye world.\n");
}


gcc  -O2 -DMODULE -D__KERNEL__ -W -Wall -Wstrict-prototypes -Wmissing-prototypes -isystem /usr/src/kernels/2.6.18-8.el5-i686/include   -c -o hello.o hello.c
编译之后出来的问题 怎么解决啊 折腾了好长时间了 还是没有搞定

In file included from /usr/src/kernels/2.6.18-8.el5-i686/include/asm/thread_info.h:16,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/thread_info.h:21,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/preempt.h:9,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/spinlock.h:49,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/capability.h:45,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/sched.h:44,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:9,
                 from hello.c:1:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/processor.h:80: 错误:‘CONFIG_X86_L1_CACHE_SHIFT’ 未声明 (不在函数内)
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/processor.h:80: 错误:要求的对齐边界不是常量
在包含自 /usr/src/kernels/2.6.18-8.el5-i686/include/linux/sched.h:49 的文件中,
                 从 /usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:9,
                 从 hello.c:1:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:33:3: 错误:#error You lose.
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:210:31: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:210:31: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:210:31: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:210:31: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:210:31: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:210:31: 错误:#if 中用零做除数
In file included from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/sched.h:49,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:9,
                 from hello.c:1:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h: 在函数 ‘jiffies_to_msecs’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:259: 错误:‘CONFIG_HZ’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:259: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:259: 错误:所在的函数内只报告一次。)
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:265:46: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h: 在函数 ‘jiffies_to_usecs’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:270: 错误:‘CONFIG_HZ’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:278:46: 错误:#if 中用零做除数

/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h: 在函数 ‘jiffies_to_timespec’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:334: 错误:‘CONFIG_HZ’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h: 在函数 ‘timeval_to_jiffies’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:356: 错误:‘CONFIG_HZ’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:360: 错误:‘SHIFT_HZ’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h: 在函数 ‘jiffies_to_timeval’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:372: 错误:‘CONFIG_HZ’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:385:6: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:385:6: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:385:6: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h: 在函数 ‘jiffies_to_clock_t’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:386: 错误:‘CONFIG_HZ’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h: 在函数 ‘clock_t_to_jiffies’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:397: 错误:‘CONFIG_HZ’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:416:6: 错误:#if 中用零做除数
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h: 在函数 ‘jiffies_64_to_clock_t’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/jiffies.h:417: 错误:‘CONFIG_HZ’ 未声明 (在此函数内第一次使用)
In file included from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/rwsem.h:24,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/asm/semaphore.h:42,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/sched.h:57,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:9,
                 from hello.c:1:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h: 在函数 ‘__down_read’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h:104: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h: 在函数 ‘__down_write_nested’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h:156: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h: 在函数 ‘__up_read’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h:198: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h: 在函数 ‘__up_write’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h:224: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h: 在函数 ‘__downgrade_write’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/rwsem.h:249: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
In file included from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/sched.h:57,
                 from /usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:9,
                 from hello.c:1:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/semaphore.h: 在函数 ‘down’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/semaphore.h:105: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/semaphore.h: 在函数 ‘down_interruptible’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/semaphore.h:130: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/semaphore.h: 在函数 ‘down_trylock’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/semaphore.h:155: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/semaphore.h: 在函数 ‘up’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/semaphore.h:179: 错误:expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
在包含自 /usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:22 的文件中,
                 从 hello.c:1:
/usr/src/kernels/2.6.18-8.el5-i686/include/asm/module.h:65:2: 错误:#error unknown processor family
make: *** [hello.o] 错误 1

cckj 2008-12-10 15:35

M=$(PWD)
是用make编译模块时的一个参数   
其实 类似 -DMODULE -D__KERNEL__ 这些参数 在 make module 的时候已经自动处理了
这里需要指定需要编译的模块的源码所在的目录

$(PWD)的值 就是当前目录
页: [1]
查看完整版本: 写module碰到的问题
Baidu