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

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

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

【背景技术】
[0002] 在嵌入式设备上的Linux内核定制,特别是源代码级的修改,常常会面临这样的 问题:Linux源代码非常庞大,开发者必须借助工具对其进行分析,但往往存在与定制毫不 相关的一些源代码,大幅降低了分析速度。例如:源码根目录下,开发者想通过一个文本搜 索工具,定位一个变量的使用情况,结果却显出drivers下面一系列开发者根本无需考虑 的结果(因为很多非该嵌入式设备的驱动也会用到该变量)。这无疑极大降低了开发效率。
[0003] 此外,由于Linux源码非常复杂,需要投入大量的时间对其理解。但目前的Linux 内核代码阅读器只能在台式机和笔记本上运行。无法满足很多Linux内核研究者随时随地 方便阅读Linux内核源码的要求。
[0004] 现有Linux内核源码分析中定位工作通常采用以下两种方法:
[0005] 其一为:使用文本编辑器中的搜索工具,如常见的visual studio等;
[0006] 其二为:使用带有语法分析功能的文本编辑器,利用语法分析定位搜索关键字所 在的代码段。
[0007] 对于上述的两种方案,无论是哪一种,都没有办法去除Linux内核源码中没有必 要的无关冗余代码,所以,均会出现这样的问题:对于一个内核函数或变量,在一次搜索的 过程中,出现很多次,代码分析者必须手工剔出那些自己不需要的搜索结果,这是极为耗时 的。
[0008] 此外,现有Linux分析工具只能在台式机或笔记本上运行,用户不能随时随地阅 读和对代码进行修改,同时也无法看到修改后的结果。


【发明内容】

[0009] 本发明的目的在于提供一种基于Makefile的源码精简器进行精简源码的方法,其 有效解决上述问题,去处这些冗余,减少代码分析者手工剔除自己不需要的搜索结果的工 作量。
[0010] 为实现上述目的,本发明采用如下技术方案进行实施:
[0011] 一种基于Makefile的源码精简器进行精简源码的方法,具体操作如下:
[0012] S1 :源码精简器与远端Linux服务器通过internet相连,源码精简器中的网卡接 收来自服务器的源码,并将其传给精简模块进行精简;
[0013] S2 :精简模块对源码进行精简,从Linux内核Makefile中提取内核源码文件和目录 与配置选项的关系,然后通过扫描.config文件,获得内核配置选项,然后将那些没有选中 的配置选项对应的源码文件及目录全部删除并显示给用户;
[0014] S3 :用户可查看代码或修改代码或对代码进行注释、查找、加书签;将更新后的代 码通过网络上传到服务器上。
[0015] 具体的操作为:
[0016] 源码精简器包括代码精简模块、网络输入输出模块、显示模块和用户输入处理模 块;
[0017] 代码精简模块对源代码的所有Makefile文件进行扫描,并对其中的所有内容过 滤,得到每个文件与目录所对应的配置选项,最终形成一个二维表的形式存放,并根据这张 表裁减代码;
[0018] 用户通过用户输入处理模块对精简后的代码进行查找和定位,以及阅读加注释或 加书签或修改。
[0019] 步骤S3中将最终精简好的代码以树形图显示给最终用户,并上传给远端的服务 器。允许用户用手持终端随时随地察看修改代码,并上传服务器,无需像通常代码察看修改 那样,必须通过笨重的PC进行。
[0020] 步骤S2具体的操作为:
[0021] S21 :将找到所有makefiles的路径列表,根据这些路径列表,查找各个Makefile的 内容,并通过正则表达式,提取出各个Makefile的配置选项与源码文件的对应关系;
[0022] S22 :通过扫描.config文件,获得已经选中的配置选项;
[0023] S23 :根据该配置选项,由此对上一阶段的文件列表进行操作,删除那些没有选中 的配置选项对应的文件,保留那些被选中的配置选项所对应的源代码;
[0024] S24 :更新源码中的KConfig文件。
[0025] 采用上述方法进行精简源码,其可有效解决现有技术不能根据用户对Linux的配 置文件,对Linux源码进行削减,定位时需要搜索大量的无关区域,导致搜索时间加长,弓丨 入大量的重复无用的搜索结果等问题。大幅减少内核源码数量,降低了开发人员分析定位 的难度。

【专利附图】

【附图说明】
[0026] 图1为源码精简器与Linux服务器的连接示意图;
[0027] 图2为源码精简器的结构示意图。

【具体实施方式】
[0028] 为了使本发明的目的及优点更加清楚明白,以下结合实施例对本发明进行进一步 详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发 明。
[0029] Linux源代码非常庞大,开发者必须借助工具对其进行分析,但往往存在与定制毫 不相关的一些源代码,大幅降低了分析速度。为此本发明采取如图1所示的技术方案进行 实施,采用基于Makefile的源码精简器进行精简源码,具体的操作为:
[0030] 源码精简器与远端Linux服务器通过internet相连,源码精简器中的网卡接收来 自服务器的源码,并将其传给精简模块进行精简;
[0031] 精简模块对源码进行精简,从Linux内核Makefile中提取内核源码文件和目录与 配置选项的关系,然后通过扫描.config文件,获得内核配置选项,然后将那些没有选中的 配置选项对应的源码文件及目录全部删除并显示给用户;
[0032] 用户可查看代码或修改代码或对代码进行注释、查找、加书签;将更新后的代码通 过网络上传到服务器上。
[0033] 具体的操作为:
[0034] 源码精简器包括代码精简模块11、网络输入输出模块13、显示模块12和用户输入 处理模块14 ;
[0035] 源码精简器首先通过其上的网络接口下载远端Linux服务器上的内核源码,并交 给代码精简模块11进行处理。
[0036] 代码精简模块11对源代码的所有Makefile文件进行扫描,并对其中的所有内容过 滤,得到每个文件与目录所对应的配置选项(控制其文件的配置选项可能有多个),最终形 成一个二维表的形式存放。并根据这张表裁减代码。
[0037] 具体过程如下:
[0038] 该语句将找到所有makefiles的路径列表,根据这些路径列表,查找各个Makefile 的内容,并通过正则表达式,提取出各个Makefile的配置选项与源码文件的对应关系。
[0039] 接着,通过扫描.config文件,获得已经选中的配置选项。
[0040] 根据该配置选项,由此对上一阶段的文件列表进行操作,即删除那些没有选中的 配置选项对应的文件。保留那些被选中的配置选项所对应的源代码。
[0041] 更新源码中的KConfig文件。这是因为由于删除了源码后,KConfig中所包含的有 关该源码的选项已经失效,所以,需要更新这些受影响的KConfig。
[0042] 通过这一步,可以有效缩减内核源码体积。
[0043] 将最终精简好的代码以树形图显示给最终用户,并上传给远端的服务器。
[0044] 用户通过用户输入处理模块对精简后的代码进行查找和定位,以及阅读加注释或 加书签或修改。
[0045] 总之,本发明提供的上述方法,可有效解决现有技术不能根据用户对Linux的配 置文件,对Linux源码进行削减,定位时需要搜索大量的无关区域,导致搜索时间加长,弓丨 入大量的重复无用的搜索结果等问题。大幅减少内核源码数量,降低了开发人员分析定位 的难度。
[0046] 以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人 员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应 视为本发明的保护范围。
【权利要求】
1. 一种基于Makefile的源码精简器进行精简源码的方法,具体操作如下: 51 :源码精简器与远端Linux服务器通过internet相连,源码精简器中的网卡接收来 自服务器的源码,并将其传给精简模块进行精简; 52 :精简模块对源码进行精简,从Linux内核Makefile中提取内核源码文件和目录与配 置选项的关系,然后通过扫描.config文件,获得内核配置选项,然后将那些没有选中的配 置选项对应的源码文件及目录全部删除并显示给用户; 53 :用户可查看代码或修改代码或对代码进行注释、查找、加书签;将更新后的代码通 过网络上传到服务器上。
2. 如权利要求1所述基于Makefile的源码精简器进行精简源码的方法,其特征在于, 源码精简器包括代码精简模块、网络输入输出模块、显示模块和用户输入处理模块; 代码精简模块对源代码的所有Makefile文件进行扫描,并对其中的所有内容过滤,得 到每个文件与目录所对应的配置选项,最终形成一个二维表的形式存放,并根据这张表裁 减代码; 用户通过用户输入处理模块对精简后的代码进行查找和定位,以及阅读加注释或加书 签或修改。
3. 如权利要求1或2所述基于Makefile的源码精简器进行精简源码的方法,其特征在 于,步骤S3中将最终精简好的代码以树形图显示给最终用户,并上传给远端的服务器。
4. 如权利要求1或2所述基于Makefile的源码精简器进行精简源码的方法,其特征在 于,步骤S2具体的操作为: 521 :将找到所有makefiles的路径列表,根据这些路径列表,查找各个Makefile的内容, 并通过正则表达式,提取出各个Makefile的配置选项与源码文件的对应关系; 522 :通过扫描.config文件,获得已经选中的配置选项; 523 :根据该配置选项,由此对上一阶段的文件列表进行操作,删除那些没有选中的配 置选项对应的文件,保留那些被选中的配置选项所对应的源代码; 524 :更新源码中的KConfig文件。
【文档编号】G06F9/44GK104090748SQ201410229285
【公开日】2014年10月8日 申请日期:2014年5月22日 优先权日:2014年5月22日
【发明者】苏锐丹, 李航, 白晓颖 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1