当前位置: 技术问答>linux和unix
模块加载时的版本控制问题.
来源: 互联网 发布时间:2016-09-08
本文导语: 我有一个开发板: Linux内核版本是: >cat /proc/version Linux version 2.4.21-rmk1-crus1.4.3 (root@cyc) (gcc version 3.3) #139 三 9月 27 10:44:39 CST 2006 但是这板子,好久以前的内核弄丢了,编译配置什么都丢了,没办法自己去下几个...
我有一个开发板:
Linux内核版本是:
>cat /proc/version
Linux version 2.4.21-rmk1-crus1.4.3 (root@cyc) (gcc version 3.3) #139 三 9月 27 10:44:39 CST 2006
但是这板子,好久以前的内核弄丢了,编译配置什么都丢了,没办法自己去下几个程序:
arm-linux-gcc 3.3版本
Linux versiong 2.4.21 内核
patch-2.4.21-rmk1.bz2 补丁
内核目录:/home/linux-2.4.21
编译内核成功,然后我就开始编译了一个测试驱动:
驱动代码很简单 :
编译命令:
arm-linux-gcc -D__KERNEL__ -c -o hello.o hello.c -I/home/linux-2.4.21
编译成功后
下载到开发板,执行insmod hello.o
输出错误信息:
insmod: kernel-module version mismatch
hello.o was compiled for kernel version 2.4.21-rmk1
while this kernel is version 2.4.21-rmk1-crus1.4.3.
为什么这里会提示版本不一致,但是驱动加载失败啊...
晕晕,想不明白了.
Linux内核版本是:
>cat /proc/version
Linux version 2.4.21-rmk1-crus1.4.3 (root@cyc) (gcc version 3.3) #139 三 9月 27 10:44:39 CST 2006
但是这板子,好久以前的内核弄丢了,编译配置什么都丢了,没办法自己去下几个程序:
arm-linux-gcc 3.3版本
Linux versiong 2.4.21 内核
patch-2.4.21-rmk1.bz2 补丁
内核目录:/home/linux-2.4.21
编译内核成功,然后我就开始编译了一个测试驱动:
驱动代码很简单 :
#define MODULE
#include
int init_module(void) { printk("Hello, worldn"); return 0; }
void cleanup_module(void) { printk("Goodbye cruel worldn");}
编译命令:
arm-linux-gcc -D__KERNEL__ -c -o hello.o hello.c -I/home/linux-2.4.21
编译成功后
下载到开发板,执行insmod hello.o
输出错误信息:
insmod: kernel-module version mismatch
hello.o was compiled for kernel version 2.4.21-rmk1
while this kernel is version 2.4.21-rmk1-crus1.4.3.
为什么这里会提示版本不一致,但是驱动加载失败啊...
晕晕,想不明白了.
|
while this kernel is version 2.4.21-rmk1-crus1.4.3.
内核模块和内核的怎么本不一致,你确定你的 -I/home/linux-2.4.21指向了正确的version 2.4.21-rmk1-crus1.4.3. 内核源代码树?
|
你编译模块关联的Linux内核,跟你加载模块使用的Linux内核版本不一致,两个版本需要对应起来。