linux如何改驱动版本,驱动版本问题

/******************************************************

*帅得不敢出门  C++爱好者灌水天堂   3503799  转载请保留此信息

******************************************************/

由于没有开发板,只好做pc机下linux的模块加载了.原理与开发板的是一样的.

编写dri_arh.c源代码

#include

#include

#include

#include

#include

static int __init dri_arch_init_module(void)

{

printk("This is a simple driver-module!/r/n");

return 0;

}

static void __exit dri_arch_cleanup_module(void)

{

printk("Goodbye driver-module!/r/n");

}

module_init(dri_arch_init_module);

module_exit(dri_arch_cleanup_module);

然后编译,我就不写Makefile了 直接命令编译它

[root@localhost 0430]# gcc -D__KERNEL__ -DMODULE -Wall -c -O2 -o dri_arch.o

dri_arch.c

In file included from dri_arch.c:1:

/usr/include/linux/string.h:8:2: warning: #warning Using kernel header in

userland!

dri_arch.c: In function `dri_arch_init_module':

dri_arch.c:9: warning: implicit declaration of function `printk'

出现错误了,头文件把它包含进去就行了

[root@localhost 0430]# gcc -D__KERNEL__ -DMODULE -Wall

-I/usr/src/linux-2.4.20-8/include  -c -O2 -o dri_arch.o

dri_arch.c

生成了.o文件了.  加载到内核中去(原先我加载过了,先rmmod把它卸载掉)

[root@localhost 0430]# insmod dri_arch.o

dri_arch.o: kernel-module version mismatch

dri_arch.o was compiled for kernel version 2.4.20-8custom

while this kernel is version 2.4.20-8.

发现出现系统模块版本不匹配

于是make menuconfig

make

编译内核,再重新编译模块,并加载,还是不行,只好修改/usr/src/linux-2.4.20-8/include/linux/versions.h

其原先内容如下:

#define UTS_RELEASE "2.4.20-8custom"

#define LINUX_VERSION_CODE 132116

#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

把其中的custom去掉保存.

再编译加载

[root@localhost 0430]# gcc -D__KERNEL__ -DMODULE -Wall -O2

-I/usr/src/linux-2.4.20-8/include -c -o dri_arch.o dri_arch.c

[root@localhost 0430]# insmod dri_arch.o

Warning: loading dri_arch.o will taint the kernel: no license

See

http://www.tux.org/lkml/#export-tainted for information about tainted

modules

Module dri_arch loaded, with warnings

加载成功了.

$lsmod  (查看当前已挂载模块,会看到dri_arch)

$dmesg (查看模块输出信息:This is a simple driver-module!)

$rmmod dri_arch (卸载dri_arch)

$lsmod (查看当前已挂载模块,不再看到dri_arch)

$dmesg (查看模块输出信息:Goodbye driver-module!)

实验结束! 谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值