|
发表于 2009-10-11 13:52:19
|
显示全部楼层
Post by Sorry623;2030155
比如我要编译一个2.6.30版本内核中运行的模块,那么为什么一定要先编译一个2.6.30的内核,然后使用这个内核,在运行这个内核的环境里面去编译模块?
我试了在2.6.27环境中使用2.6.30的源代码树去编译模块,出错,但使用2.6.27的源代码树就可以
我以为编译模块的时候只是要去链接内核源代码中的一些头文件和一些函数实现,这与运行的环境应该没什么关联的
编译内核的过程中不也是有make modules,那个时候版本并不对应,却可以通过
那是为什么呢?这两个过程中有什么区别吗?
注:内核源代码树都是编译过的
内核模块的装载是一个动态链接的过程, 符号表之类在链接有版本号要求, 相近几个版本一般不会有很大问题。 insmod和modprobe对模块的版本检查有区别 |
|