关于驱动模块的编译问题

我照着Linux设备驱动程序(第二版)中,第二章编辑了hello.c,清单:
#define MODULE
#include

 1<linux module.h="">   
 2  
 3int init_module(void) { printk("&lt;1&gt;Hello, world\n"); return 0;}   
 4void cleanup_module(void) { printk("&lt;1&gt;Goodbye cruel world\n");}   
 5  
 6gcc -c hello.c 编译,但是出来很多错误,都是<linux module.h="">里边的,好像是什么地方没有设置对。   
 7我刚学内核编程,请各位高手指点一下。   
 8\---------------------------------------------------------------   
 9  
10当然不能用gcc -c 编译了!   
11你没有看到他的makefile文件么? 要用-O选项优化呢!   
12我建议你先看一看makefile文件施用什么编译的噢!!   
13\---------------------------------------------------------------   
14  
15这样简单的例子不需要makefile,如果你对makefile非常熟悉的话也可以写一个。使用下面的命令就行了。   
16  
17gcc -c -D__KERNEL__ -I/usr/src/linux-2.4/include hello.c   
18\---------------------------------------------------------------   
19这个问题我已经解决了,我在hello.c中增加了 include<asm atomic.h="">,然后用gcc -c hello.c 编译,顺利通过,insmod -f ./hello.o 成功。   
20  
21但是有又编写了一个小模块a.cgcc -c a.c 顺利通过,但是在insmod时没有成功,总是出现这个提示:couldn't find the kernel version the module was compilled for.   
22我是 insmod (-f)./a.o ,在带有-f参数和不带的时候都是如此。请问这个问题怎么解决?   
23  
24\-----------------------------------------------------------------------------   
25  
26我也是刚刚接触内和,但我是这样做的:   
27gcc -D__KERNEL__ -I/usr/src/linux-2.4.18-14/include -DMODULE -Wall -O2 -c hello.c -o hello.c   
28  
29然后:insmod hello.o   
30由警告,但可以顺利加载</asm></linux></linux>
Published At
Categories with 服务器类
Tagged with
comments powered by Disqus