编译模块为什么要运行对应内核版本?
时间:2009-09-25
来源:互联网
比如我要编译一个2.6.30版本内核中运行的模块,那么为什么一定要先编译一个2.6.30的内核,然后使用这个内核,在运行这个内核的环境里面去编译模块?
我试了在2.6.27环境中使用2.6.30的源代码树去编译模块,出错,但使用2.6.27的源代码树就可以
我以为编译模块的时候只是要去链接内核源代码中的一些头文件和一些函数实现,这与运行的环境应该没什么关联的
编译内核的过程中不也是有make modules,那个时候版本并不对应,却可以通过
那是为什么呢?这两个过程中有什么区别吗?
注:内核源代码树都是编译过的
我试了在2.6.27环境中使用2.6.30的源代码树去编译模块,出错,但使用2.6.27的源代码树就可以
我以为编译模块的时候只是要去链接内核源代码中的一些头文件和一些函数实现,这与运行的环境应该没什么关联的
编译内核的过程中不也是有make modules,那个时候版本并不对应,却可以通过
那是为什么呢?这两个过程中有什么区别吗?
注:内核源代码树都是编译过的
作者: Sorry623 发布时间: 2009-09-25
貌似有个模块的版本检查, 就是那个什么magic什么的。
不懂,瞎说两句!
不懂,瞎说两句!
作者: 风之湍 发布时间: 2009-09-30
内核模块相当于操作系统的一部分,操作系统加载时校验是比较严格的。
在编译内核模块是,需要链接一个vermagic.o,其中包含目标内核版本信息、编译器版本信息、及一些配置变量的设置。
操作系统在加载内核模块是,这些信息都要被校验,如果不匹配就无法加载。
在编译内核模块是,需要链接一个vermagic.o,其中包含目标内核版本信息、编译器版本信息、及一些配置变量的设置。
操作系统在加载内核模块是,这些信息都要被校验,如果不匹配就无法加载。
作者: mengge 发布时间: 2009-10-09
引用:
作者: Sorry623
比如我要编译一个2.6.30版本内核中运行的模块,那么为什么一定要先编译一个2.6.30的内核,然后使用这个内核,在运行这个内核的环境里面去编译模块?
我试了在2.6.27环境中使用2.6.30的源代码树去编译模块,出错,但使用2.6.27的源代码树就可以 我以为编译模块的时候只是要去链接内核源代码中的一些头文件和一些函数实现,这与运行的环境应该没什么关联的 编译内核的过程中不也是有make modules,那个时候版本并不对应,却可以通过 那是为什么呢?这两个过程中有什么区别吗? 注:内核源代码树都是编译过的 |
作者: is02bing 发布时间: 2009-10-11
大体明白了,谢谢楼上各位
作者: Sorry623 发布时间: 2009-10-16
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28