发新话题
打印

新手请教:如何加载自定义模块

新手请教:如何加载自定义模块

本人现在正在搞的一个东东里需要加载自己定义的模块,于是便学习编译自定义模块,下面这个程序大家肯定都见过,但我就是编译不过啊。
#define __KERNEL__
#define MODULE
#include <linux/module.h>
#include <linux/kernel.h>
int init_module()
{
printk("<1>hello!\n");
return 0;
}

void cleanup_module()
{
  printf("<1>bye\n");
}
程序保存为hello.c,然后该如何进行,我知道gcc和insmod,但是具体怎么用,能否详细告之。      

TOP

你怎么编译的?该不会是用gcc -o hello hello.c吧。      
1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。

TOP

回复 #2 zltjiangshi 的帖子

是用gcc -c hello.c      

TOP

omg,应用程序才这么编译,内核模块不是这么干的,要写makefile的~~
你的程序是从哪本书看到的,书上会教你怎么写makefile的。      
1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。

TOP

回复 #4 zltjiangshi 的帖子

我就是用gcc编译的啊,几天加了路径-I /usr/src/linux-2.4.20-8/include,就编译成功了,然后insmod加载进了内核。
你说的makefile我听说过,但具体如何用,您能不能说明白点,就针对我这个,你写下,好吗?      

TOP

我一直是 gcc -c hello.c -D _KERNEL_ -DMODULE      

TOP

首先,makefile有些通用的规则,不是一两句话能说清楚的
其次,普通的makefile和模块的makefile写法是有区别的
最后,2.4和2.6内核的写法也有区别

你这个模块不是凭空写出来的吧,从哪看来的就到哪去找makefile      
1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。

TOP

http://bbs.chinaunix.net/viewthr ... &extra=page%3D1
里面有介绍针对2.4和2.6的模块编译的makefile文件
当然这只是makefile的一个简单的应用
简略的介绍了模块的编译      

TOP

发新话题