CN104090748B - 基于Makefile的源码精简器进行精简源码的方法 - Google Patents
基于Makefile的源码精简器进行精简源码的方法 Download PDFInfo
- Publication number
- CN104090748B CN104090748B CN201410229285.6A CN201410229285A CN104090748B CN 104090748 B CN104090748 B CN 104090748B CN 201410229285 A CN201410229285 A CN 201410229285A CN 104090748 B CN104090748 B CN 104090748B
- Authority
- CN
- China
- Prior art keywords
- code
- source code
- simplified
- makefile
- config
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 13
- 238000012986 modification Methods 0.000 claims abstract description 11
- 230000004048 modification Effects 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 5
- 230000003247 decreasing effect Effects 0.000 abstract description 3
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- VIKNJXKGJWUCNN-XGXHKTLJSA-N norethisterone Chemical compound O=C1CC[C@@H]2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 VIKNJXKGJWUCNN-XGXHKTLJSA-N 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于Makefile的源码精简器进行精简源码的方法,包括源码精简器与远端Linux服务器通过internet相连,源码精简器中的网卡接收来自服务器的源码,并将其传给精简模块进行精简;精简模块对源码进行精简,从Linux内核Makefile中提取内核源码文件和目录与配置选项的关系,然后通过扫描.config文件,获得内核配置选项,然后将那些没有选中的配置选项对应的源码文件及目录全部删除并显示给用户;以及用户可查看代码或修改代码或对代码进行注释、查找、加书签;将更新后的代码通过网络上传到服务器上。通过采用上述方案进行实施,其可大幅减少内核源码数量,降低了开发人员分析定位的难度。
Description
技术领域
本发明涉及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:将找到所有makefile的路径列表,根据这些路径列表,查找各个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文件进行扫描,并对其中的所有内容过滤,得到每个文件与目录所对应的配置选项(控制其文件的配置选项可能有多个),最终形成一个二维表的形式存放。并根据这张表裁减代码。
具体过程如下:
该语句将找到所有makefile的路径列表,根据这些路径列表,查找各个Makefile的内容,并通过正则表达式,提取出各个Makefile的配置选项与源码文件的对应关系。
接着,通过扫描.config文件,获得已经选中的配置选项。
根据该配置选项,由此对上一阶段的文件列表进行操作,即删除那些没有选中的配置选项对应的文件。保留那些被选中的配置选项所对应的源代码。
更新源码中的KConfig文件。这是因为由于删除了源码后,KConfig中所包含的有关该源码的选项已经失效,所以,需要更新这些受影响的KConfig。
通过这一步,可以有效缩减内核源码体积。
将最终精简好的代码以树形图显示给最终用户,并上传给远端的服务器。
用户通过用户输入处理模块对精简后的代码进行查找和定位,以及阅读加注释或加书签或修改。
总之,本发明提供的上述方法,可有效解决现有技术不能根据用户对Linux的配置文件,对Linux源码进行削减,定位时需要搜索大量的无关区域,导致搜索时间加长,引入大量的重复无用的搜索结果等问题。大幅减少内核源码数量,降低了开发人员分析定位的难度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (3)
1.一种基于Makefile的源码精简器进行精简源码的方法,具体操作如下:
S1:源码精简器与远端Linux服务器通过internet相连,源码精简器中的网卡接收来自服务器的源码,并将其传给代码精简模块进行精简;
S2:代码精简模块对源码进行精简,从Linux内核Makefile中提取内核源码文件和目录与配置选项的关系,然后通过扫描.config文件,获得内核配置选项,然后将那些没有选中的配置选项对应的源码文件及目录全部删除并显示给用户;
S3:用户可查看代码或修改代码或对代码进行注释、查找、加书签;将更新后的代码通过网络上传到服务器上;
源码精简器包括代码精简模块、网络输入输出模块、显示模块和用户输入处理模块;
代码精简模块对源代码的所有Makefile文件进行扫描,并对其中的所有内容过滤,得到每个文件与目录所对应的配置选项,最终形成一个二维表的形式存放,并根据这张表裁减代码;
用户通过用户输入处理模块对精简后的代码进行查找和定位,以及阅读加注释或加书签或修改。
2.如权利要求1所述基于Makefile的源码精简器进行精简源码的方法,其特征在于,步骤S3中将最终精简好的代码以树形图显示给最终用户,并上传给远端的服务器。
3.如权利要求1所述基于Makefile的源码精简器进行精简源码的方法,其特征在于,步骤S2具体的操作为:
S21:将找到所有makefile的路径列表,根据这些路径列表,查找各个Makefile的内容,并通过正则表达式,提取出各个Makefile的配置选项与源码文件的对应关系;
S22:通过扫描.config文件,获得已经选中的配置选项;
S23:根据该配置选项,由此对上一阶段的文件列表进行操作,删除那些没有选中的配置选项对应的文件,保留那些被选中的配置选项所对应的源代码;
S24:更新源码中的KConfig文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410229285.6A CN104090748B (zh) | 2014-05-22 | 2014-05-22 | 基于Makefile的源码精简器进行精简源码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410229285.6A CN104090748B (zh) | 2014-05-22 | 2014-05-22 | 基于Makefile的源码精简器进行精简源码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104090748A CN104090748A (zh) | 2014-10-08 |
CN104090748B true CN104090748B (zh) | 2017-06-06 |
Family
ID=51638467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410229285.6A Expired - Fee Related CN104090748B (zh) | 2014-05-22 | 2014-05-22 | 基于Makefile的源码精简器进行精简源码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104090748B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11138094B2 (en) | 2020-01-10 | 2021-10-05 | International Business Machines Corporation | Creation of minimal working examples and environments for troubleshooting code issues |
US11163592B2 (en) | 2020-01-10 | 2021-11-02 | International Business Machines Corporation | Generation of benchmarks of applications based on performance traces |
CN113127077B (zh) * | 2021-03-29 | 2023-01-31 | 中科信安(深圳)信息技术有限公司 | 一种基于服务器的微内核操作系统部署方法及操作系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895729A (zh) * | 2010-07-06 | 2010-11-24 | 南京南自信息技术有限公司 | 基于嵌入式Linux裁剪系统的流媒体服务器 |
CN103699389A (zh) * | 2013-12-30 | 2014-04-02 | 北京大学 | 一种基于编译选项的Linux内核模块关系提取方法 |
-
2014
- 2014-05-22 CN CN201410229285.6A patent/CN104090748B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895729A (zh) * | 2010-07-06 | 2010-11-24 | 南京南自信息技术有限公司 | 基于嵌入式Linux裁剪系统的流媒体服务器 |
CN103699389A (zh) * | 2013-12-30 | 2014-04-02 | 北京大学 | 一种基于编译选项的Linux内核模块关系提取方法 |
Non-Patent Citations (1)
Title |
---|
Linux嵌入式化技术研究;刘峥嵘;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20051115(第07期);Linux嵌入式化技术研究 * |
Also Published As
Publication number | Publication date |
---|---|
CN104090748A (zh) | 2014-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522011B (zh) | 一种基于编程现场上下文深度感知的代码行推荐方法 | |
US11762926B2 (en) | Recommending web API's and associated endpoints | |
CN112749284B (zh) | 知识图谱构建方法、装置、设备及存储介质 | |
CN101996195B (zh) | 音频文件中语音信息的搜索方法、装置及设备 | |
US10394925B2 (en) | Automating web tasks based on web browsing histories and user actions | |
US7836396B2 (en) | Automatically collecting and compressing style attributes within a web document | |
CN109241174B (zh) | 数据同步方法、装置、可读存储介质和电子设备 | |
CN111831802B (zh) | 一种基于lda主题模型的城市领域知识检测系统及方法 | |
CN106599160B (zh) | 一种内容规则库管理系统及其编码方法 | |
CN112541353A (zh) | 视频生成方法、装置、设备和介质 | |
CN104090748B (zh) | 基于Makefile的源码精简器进行精简源码的方法 | |
CN102012896A (zh) | 一种实现文件内容批量修改的方法和装置 | |
CN110825941A (zh) | 一种内容管理系统识别方法、装置和存储介质 | |
CN110688315A (zh) | 接口代码检测报告生成方法、电子装置及存储介质 | |
US20150120682A1 (en) | Automated recognition of patterns in a log file having unknown grammar | |
CN104537012A (zh) | 数据处理方法和装置 | |
CN114036561A (zh) | 信息隐藏、信息获取方法、装置、存储介质及电子设备 | |
CN105718463A (zh) | 关键字模糊匹配方法及装置 | |
CN104462552A (zh) | 问答页面核心词提取方法和装置 | |
CN102207938A (zh) | 一种互译词条的获取方法及系统 | |
CN111177313A (zh) | 一种即时录入编程代码即时查找参考复用程序的搜索方法 | |
KR100689059B1 (ko) | 인터넷 컨텐츠를 tts 변환하여 개인정보처리기로제공하는 네트워크 동기화 시스템 및 그 방법 | |
CN114186554A (zh) | 脚本数据处理方法、装置、计算机设备及存储介质 | |
CN114115831A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN109656543B (zh) | 一种基于文件关键字替换的自动代码生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
DD01 | Delivery of document by public notice |
Addressee: XIDIAN University Document name: Notification of Termination of Patent Right |
|
DD01 | Delivery of document by public notice | ||
DD01 | Delivery of document by public notice | ||
DD01 | Delivery of document by public notice |
Addressee: XIDIAN University Document name: Notification to Go Through Formalities Rectification of Restoration of Right |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170606 Termination date: 20190522 |
|
DD01 | Delivery of document by public notice | ||
DD01 | Delivery of document by public notice |
Addressee: Su Ruidan Document name: Notice of approval of right to request |