首页> 中国专利> 基于Makefile的源码精简器进行精简源码的方法

基于Makefile的源码精简器进行精简源码的方法

摘要

本发明公开了一种基于Makefile的源码精简器进行精简源码的方法,包括源码精简器与远端Linux服务器通过internet相连,源码精简器中的网卡接收来自服务器的源码,并将其传给精简模块进行精简;精简模块对源码进行精简,从Linux内核Makefile中提取内核源码文件和目录与配置选项的关系,然后通过扫描.config文件,获得内核配置选项,然后将那些没有选中的配置选项对应的源码文件及目录全部删除并显示给用户;以及用户可查看代码或修改代码或对代码进行注释、查找、加书签;将更新后的代码通过网络上传到服务器上。通过采用上述方案进行实施,其可大幅减少内核源码数量,降低了开发人员分析定位的难度。

著录项

  • 公开/公告号CN104090748A

    专利类型发明专利

  • 公开/公告日2014-10-08

    原文格式PDF

  • 申请/专利权人 西安电子科技大学;

    申请/专利号CN201410229285.6

  • 发明设计人 苏锐丹;李航;白晓颖;

    申请日2014-05-22

  • 分类号G06F9/44(20060101);

  • 代理机构

  • 代理人

  • 地址 710071 陕西省西安市太白南路2号

  • 入库时间 2023-12-17 01:49:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-24

    文件的公告送达 IPC(主分类):G06F9/44 收件人:西安电子科技大学 文件名称:办理恢复权利手续补正通知书 申请日:20140522

    文件的公告送达

  • 2020-03-31

    文件的公告送达 IPC(主分类):G06F9/44 收件人:西安电子科技大学 文件名称:专利权终止通知书 申请日:20140522

    文件的公告送达

  • 2017-06-06

    授权

    授权

  • 2014-10-29

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20140522

    实质审查的生效

  • 2014-10-08

    公开

    公开

说明书

技术领域

本发明涉及Linux服务器精简解码领域,具体涉及一种基于Makefile的源码精简器进行精简源码的方法。

背景技术

在嵌入式设备上的Linux内核定制,特别是源代码级的修改,常常会面临这样的问题:Linux源代码非常庞大,开发者必须借助工具对其进行分析,但往往存在与定制毫不相关的一些源代码,大幅降低了分析速度。例如:源码根目录下,开发者想通过一个文本搜索工具,定位一个变量的使用情况,结果却显出drivers下面一系列开发者根本无需考虑的结果(因为很多非该嵌入式设备的驱动也会用到该变量)。这无疑极大降低了开发效率。

此外,由于Linux源码非常复杂,需要投入大量的时间对其理解。但目前的Linux内核代码阅读器只能在台式机和笔记本上运行。无法满足很多Linux内核研究者随时随地方便阅读Linux内核源码的要求。

现有Linux内核源码分析中定位工作通常采用以下两种方法:

其一为:使用文本编辑器中的搜索工具,如常见的visual studio等;

其二为:使用带有语法分析功能的文本编辑器,利用语法分析定位搜索关键字所在的代码段。

对于上述的两种方案,无论是哪一种,都没有办法去除Linux内核源码中没有必要的无关冗余代码,所以,均会出现这样的问题:对于一个内核函数或变量,在一次搜索的过程中,出现很多次,代码分析者必须手工剔出那些自己不需要的搜索结果,这是极为耗时的。

此外,现有Linux分析工具只能在台式机或笔记本上运行,用户不能随时随地阅读和对代码进行修改,同时也无法看到修改后的结果。

发明内容

本发明的目的在于提供一种基于Makefile的源码精简器进行精简源码的方法,其有效解决上述问题,去处这些冗余,减少代码分析者手工剔除自己不需要的搜索结果的工作量。

为实现上述目的,本发明采用如下技术方案进行实施:

一种基于Makefile的源码精简器进行精简源码的方法,具体操作如下:

S1:源码精简器与远端Linux服务器通过internet相连,源码精简器中的网卡接收来自服务器的源码,并将其传给精简模块进行精简;

S2:精简模块对源码进行精简,从Linux内核Makefile中提取内核源码文件和目录与配置选项的关系,然后通过扫描.config文件,获得内核配置选项,然后将那些没有选中的配置选项对应的源码文件及目录全部删除并显示给用户;

S3:用户可查看代码或修改代码或对代码进行注释、查找、加书签;将更新后的代码通过网络上传到服务器上。

具体的操作为:

源码精简器包括代码精简模块、网络输入输出模块、显示模块和用户输入处理模块;

代码精简模块对源代码的所有Makefile文件进行扫描,并对其中的所有内容过滤,得到每个文件与目录所对应的配置选项,最终形成一个二维表的形式存放,并根据这张表裁减代码;

用户通过用户输入处理模块对精简后的代码进行查找和定位,以及阅读加注释或加书签或修改。

步骤S3中将最终精简好的代码以树形图显示给最终用户,并上传给远端的服务器。允许用户用手持终端随时随地察看修改代码,并上传服务器,无需像通常代码察看修改那样,必须通过笨重的PC进行。

步骤S2具体的操作为:

S21:将找到所有makefiles的路径列表,根据这些路径列表,查找各个Makefile的内容,并通过正则表达式,提取出各个Makefile的配置选项与源码文件的对应关系;

S22:通过扫描.config文件,获得已经选中的配置选项;

S23:根据该配置选项,由此对上一阶段的文件列表进行操作,删除那些没有选中的配置选项对应的文件,保留那些被选中的配置选项所对应的源代码;

S24:更新源码中的KConfig文件。

采用上述方法进行精简源码,其可有效解决现有技术不能根据用户对Linux的配置文件,对Linux源码进行削减,定位时需要搜索大量的无关区域,导致搜索时间加长,引入大量的重复无用的搜索结果等问题。大幅减少内核源码数量,降低了开发人员分析定位的难度。

附图说明

图1为源码精简器与Linux服务器的连接示意图;

图2为源码精简器的结构示意图。

具体实施方式

为了使本发明的目的及优点更加清楚明白,以下结合实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

Linux源代码非常庞大,开发者必须借助工具对其进行分析,但往往存在与定制毫不相关的一些源代码,大幅降低了分析速度。为此本发明采取如图1所示的技术方案进行实施,采用基于Makefile的源码精简器进行精简源码,具体的操作为:

源码精简器与远端Linux服务器通过internet相连,源码精简器中的网卡接收来自服务器的源码,并将其传给精简模块进行精简;

精简模块对源码进行精简,从Linux内核Makefile中提取内核源码文件和目录与配置选项的关系,然后通过扫描.config文件,获得内核配置选项,然后将那些没有选中的配置选项对应的源码文件及目录全部删除并显示给用户;

用户可查看代码或修改代码或对代码进行注释、查找、加书签;将更新后的代码通过网络上传到服务器上。

具体的操作为:

源码精简器包括代码精简模块11、网络输入输出模块13、显示模块12和用户输入处理模块14;

源码精简器首先通过其上的网络接口下载远端Linux服务器上的内核源码,并交给代码精简模块11进行处理。

代码精简模块11对源代码的所有Makefile文件进行扫描,并对其中的所有内容过滤,得到每个文件与目录所对应的配置选项(控制其文件的配置选项可能有多个),最终形成一个二维表的形式存放。并根据这张表裁减代码。

具体过程如下:

该语句将找到所有makefiles的路径列表,根据这些路径列表,查找各个Makefile的内容,并通过正则表达式,提取出各个Makefile的配置选项与源码文件的对应关系。

接着,通过扫描.config文件,获得已经选中的配置选项。

根据该配置选项,由此对上一阶段的文件列表进行操作,即删除那些没有选中的配置选项对应的文件。保留那些被选中的配置选项所对应的源代码。

更新源码中的KConfig文件。这是因为由于删除了源码后,KConfig中所包含的有关该源码的选项已经失效,所以,需要更新这些受影响的KConfig。

通过这一步,可以有效缩减内核源码体积。

将最终精简好的代码以树形图显示给最终用户,并上传给远端的服务器。

用户通过用户输入处理模块对精简后的代码进行查找和定位,以及阅读加注释或加书签或修改。

总之,本发明提供的上述方法,可有效解决现有技术不能根据用户对Linux的配置文件,对Linux源码进行削减,定位时需要搜索大量的无关区域,导致搜索时间加长,引入大量的重复无用的搜索结果等问题。大幅减少内核源码数量,降低了开发人员分析定位的难度。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号