日期:2014-05-16  浏览次数:20763 次

debian加载模块 出现段错误
最近找了很多关于内核模块设计的资料,但连最简单的hello   world都通过不了,试了很多人的,最后加载模块时都会出现“段错误”。

#include   <linux/module.h>
#include   <   linux/config.h>
#include   <linux/init.h>
MODULE_LICENSE( "GPL ");//   新,否则有   waring,   去掉了   #define   MODULE,   自动定义
static   int   hello_init(void)
{
          printk(KERN_ALERT   "Hello,   world\n ");
          return   0;
}
static   void   hello_exit(void)
{
            printk(KERN_ALERT   "Goodbye,   cruel   world\n ");
}
module_init(hello_init);//   必须!!
module_exit(hello_exit);   //   必须!!


Makefile里面就一句
obj-m   :=   hello.o

#make   -C   /usr/src/linux   SUBDIRS=$PWD   modules
#include   <   linux/config.h> 这一句我去掉了,原因是提示没有这个文件。
insmod   ./hello.ko就会提示段错误。
不知道是不是我系统哪里没有配置的原因,我安装的是debian4.0  
kernel   2.6.18,默认不安装内核,我重新编译了的。

------解决方案--------------------
你确定你的内核是2.6.18的吗?
make -C /usr/src/linux SUBDIRS=$PWD modules
改为 make -C /usr/src SUBDIRS=$PWD modules
------解决方案--------------------
init函数要有前缀 __init exit函数要有__exit前缀
你试试先删掉 不用的文件系统模块,然后在添加呢?
/usr/src/linux 指向具体的源码目录,其里面就是源码了