[发明专利]一种可加载内核模块的编译方法和装置有效
| 申请号: | 201410854976.5 | 申请日: | 2014-12-31 |
| 公开(公告)号: | CN104572235B | 公开(公告)日: | 2019-02-26 |
| 发明(设计)人: | 陈耿佳;朱江;周暂 | 申请(专利权)人: | 北京奇虎科技有限公司;奇智软件(北京)有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F9/445 |
| 代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 赵娟 |
| 地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 加载 内核 模块 编译 方法 装置 | ||
本发明实施例提供了一种可加载内核模块的编译方法和装置,所述方法包括:当应用程序的组件被触发时,读取所述组件对应的一个或多个可加载内核模块LKM模板;检测所述一个或多个可加载内核模块LKM模板是否支持当前设备的处理器和/或当前操作系统的系统内核;若是,则对所述可加载内核模块LKM模板与当前操作系统的系统内核进行适配;采用适配的可加载内核模块LKM模板编译目标可加载内核模块LKM。本发明实施例大大减少了工作量、降低了成本,便于逐步地让应用程序支持不同的体系架构和内核范围,最终推出可以支持多种处理器体系架构和非常大范围的系统内核的应用程序。
技术领域
本发明涉及计算机技术领域,特别是涉及一种可加载内核模块的编译方法和一种可加载内核模块的编译装置。
背景技术
在Linux系统上,要想实现驱动硬件、修改操作系统内核功能、需要修改内核代码或者使用可加载内核模块(Loadable kernel module,LKM),如果无法编译内核又想要修改已有的内核功能,一般是通过LKM。
LKM有以下限制:
1、LKM与内核版本需要一一对应的,并且,LKM的装载有校验过程,欲在目标内核安装,必在目标内核编译。
2、若Linux系统的内核版本数量庞大,要做到兼容就得在产品中携带大量的LKM文件,用来对应相应的Linux内核。
Linux系统的标准规定,要加载一个内核模块到Linux系统的内核,需要在该内核的编译环境下编译,这里的编译环境一般包括内核版本和CPU(Central Processing Unit,中央处理器)体系架构。
如果某个产品面向的操作系统涵括x86、x86-64、mips32、mips64等几种体系架构,以及,kernel version从2.6开始的一系列Linux内核,如果要完全遵循Linux系统的标准,对每一个版本的内核都要编译出来一个LKM,产品发布需要携带数以百计的LKM。
这样的话,工作量十分之大、成本高,无论是维护还是发布产品,都会变得非常麻烦,甚至因为工作量浩大、成本过高导致不可行。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种可加载内核模块的编译方法和相应的一种可加载内核模块的编译装置。
依据本发明的一个方面,提供了一种可加载内核模块的编译方法,包括:
当应用程序的组件被触发时,读取所述组件对应的一个或多个可加载内核模块LKM模板;
检测所述一个或多个可加载内核模块LKM模板是否支持当前设备的处理器和/或当前操作系统的系统内核;
若是,则对所述可加载内核模块LKM模板与当前操作系统的系统内核进行适配;
采用适配的可加载内核模块LKM模板编译目标可加载内核模块LKM。
可选地,所述可加载内核模块LKM模板通过以下方式生成:
基于模板操作系统的内核环境编译可加载内核模块LKM模板。
可选地,所述可加载内核模块LKM模板还通过以下方式生成:
将所述可加载内核模块LKM模板编译为二进制数组;
将所述二进制数组与模板标识固化在源文件中;
其中,所述模板标识包括可支持的处理器版本信息、组件标识、可支持的内核版本范围中的至少一个;所述模板操作系统的系统内核的内核版本归属于内核版本范围。
可选地,所述读取所述组件对应的一个或多个可加载内核模块LKM模板的步骤包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司,未经北京奇虎科技有限公司;奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410854976.5/2.html,转载请声明来源钻瓜专利网。





