insmod内核版本问题解决方法
来源:互联网 发布:阿里云网站免费模板 编辑:程序博客网 时间:2024/04/30 09:22
内核模块编写时,insmod内核版本问题的解决方法:
原程序(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”);
}
编译:gcc –c hello.c
insmode hello.o
结果:
hello.o: kernel-module version mismatch
hello.o was compiled for kernel version 2.4.20
while this kernel is version 2.4.20-8
解决方法:编译时加入-I /usr/src/linux2.4.20-8/include
gcc –c hello.c –I /usr/src/linux2.4.20-8/include
其中/usr/src/linux2.4.20-8是Linux的源代码(我的机器是Rethat 9)
此时再启动该模块:insmod hello.o
结果又出现问题:
Warning: loading hello.o will taint the kernel: no license
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Hello, world!
解决方法:添加MODULE_LICENSE(“GPL”)
int init_module(void)
{
MODULE_LICENSE(“GPL”);
printk(“<1>Hello, world!/n”);
return 0;
}
此时再编译,加载,没有问题。
root# gcc –c hello.c –I /usr/src/linux2.4.20-8/include
root# insmod hello.o
Hello, world!
Root# rmmod hello
Goodbye cruel world
最后:
下面我们来查看这个模块所执行的显示内容,这些内容是不会在终端显示的。要执行命令:
dmesg
来查看。在最下面显示
Hello,World!
Goodbye cruel world
Hello,World!
...
还有一种方法可以看到这个模块是否加载成功否。
$cat /proc/modules
从中可以看到hello 这个模块,这就是我加载的。
这个文件中的信息分为四列。第一列:模块名。第二列:模块使用内存的字节数。第三列:模块的当前使用计数。第四列:备注。
- insmod内核版本问题解决方法
- insmod时的内核版本问题的解决方案
- 内核模块编译怎样绕过insmod时的版本检查(
- 内核模块编译怎样绕过insmod时的版本检查
- module编译和insmod invalid format问题解决方法
- module编译和insmod invalid format问题解决方法
- module编译和insmod invalid format问题解决方法
- 重复insmod 一个ko模块导致的异常问题解决方法
- 驱动程序 insmod无效问题解决
- Struts_jstl版本问题解决方法
- 内核模块编译时怎样绕过insmod时的版本检查
- 内核版本察看方法
- linux内核编译问题解决方法
- modprobe、insmod内核模块区别
- insmod 内核模块参数传递
- Linux kernel模块内核签名问题解决方法
- insmod
- insmod
- Linux下字符型驱动程序完整源码入门示例
- CSDN的blog奇怪的很
- PetShop4.0微软.net经典架构模式
- linux字符设备驱动程序相关的数据结构及操作
- MageTower 信息平台架构 – 开篇
- insmod内核版本问题解决方法
- Linux下PCI设备驱动程序开发
- 《Series40可扩展应用程序开发》学习笔记
- SecureCRT传输数据方法
- Struts常见错误及原因
- visual source safe让人要崩溃了
- Html的正则表达式
- 基于Web的权限管理框架之功能规格
- 嵌入式linux移植过程中“串口终端”问题解决方案