看linux设备驱动程序一书问题
看linux设备驱动程序一书,第一个例子,hello world
//hello.c
#define MODULE
#include <linux/module.h>
int init_module(void)
{ printk("<1>Hello world\n");return 0;}
void cleanup_module(void)
{ printk("<1>Goodbye cruel world\n");}
我的系统用的是redhat 9,
gcc -c hello.c
没有任何问题,但是下面却出现这样的问题,是怎么一会事呀,
# insmod ./hello.o
./hello.o: kernel-module version mismatch
./hello.o was compiled for kernel version 2.4.28
while this kernel is version 2.4.20-8.
按照书上说的我在程序里加了 #define __NO_VERSION__,都没有用,我是装了redhat9后自己重新编译使用2。4。28的内核,请教是不是头文件问题,怎么把头文件路径指向这个新内核的?还有<<linux设备驱动程序>>里的例子或函数接口是不是都过时了,我看好多都用不了,像kerneld.h这个文件根本就没有;current这个变量也没有(看sched.h里)。谢谢! 应该没有问题阿,信息应该输出到/var/log/messages中了,你看一下有没有 # gcc -I/usr/src/linux-2.4/include -D __KERNEL__ -c modt.c
# insmod modt.o
Warning: loading modt.o will taint the kernel: no license
See http://www.tux.org/lkml/#export-tainted for information about tainted
modules
Module modt loaded, with warnings
# gcc -I/usr/src/linux-2.4/include -c modt.c
# insmod modt.o
insmod: a module named modt already exists
# rmmod modt.o
rmmod: module modt.o is not loaded
页:
[1]