发新话题
打印

【求助】为什么编译出来的自写的模块,其vermagic会和系统中的不一样?

【求助】为什么编译出来的自写的模块,其vermagic会和系统中的不一样?

我从《Linux设备驱动程序 第三版》上复制出来了一个hello world 的模块:

代码:
[left][CODE]#include <linux/init.h>[/left]
[left]#include <linux/module.h>[/left]

[left]MODULE_LICENSE ("GPL");[/left]

[left]static int hello_init(void)[/left]
[left]{[/left]
[left]printk (KERN_ALERT "hello, world\n");[/left]
[left]return 0;[/left]
[left]}[/left]
[left]static void hello_exit(void)[/left]
[left]{[/left]
[left]printk (KERN_ALERT "Good bye, cruel world\n");[/left]
[left]}[/left]

[left]module_init(hello_init);[/left]
[left]module_exit(hello_exit);[/left]
[/CODE]


Makefile只写一行: obj-m :=hello.o
编译命令是 : make ?C /usr/src/linux-source-2.6.15-2 M=`pwd` modules

我的源码环境是这样建立的:
先安装源码包和头文件包,然后把头文件都拷贝到源码目录,然后把/boot目录里面的config文件拷贝到源码目录,名为.config。

这样之后,我编译模块。出来的模块用modinfo查看,其vermagic 和系统中其它模块是不一样的,总多出来“ preempt PENTIUM4”的字样,无法装载。

之后,我从源码编译一遍内核,再编译我自己的模块。这回得到的hello.ko,它的vermagic就和系统中的一样了,可以装载了。

我在两个环境中试验:五一节之前下载的 debian etch weekly build版和sarge 3.1r2版,结果都是这样的。

我的问题是:
1. 为什么第一次编译出来的模块,它的vermagic不同。
2. 为什么第二次编译出来的模块,它的vermagic和第一次就不一样了
3. 如何正确地配置源码树呢?      
C2.0+845PE+512M+80G+Debian 3.1+ XP sp2 I need much money, big house and encourage.

TOP

发新话题