CN104090748B - 基于Makefile的源码精简器进行精简源码的方法 - Google Patents

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

Info

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
Application number
CN201410229285.6A
Other languages
English (en)
Other versions
CN104090748A (zh
Inventor
苏锐丹
李航
白晓颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201410229285.6A priority Critical patent/CN104090748B/zh
Publication of CN104090748A publication Critical patent/CN104090748A/zh
Application granted granted Critical
Publication of CN104090748B publication Critical patent/CN104090748B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

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

Description

基于Makefile的源码精简器进行精简源码的方法
技术领域
本发明涉及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文件。
CN201410229285.6A 2014-05-22 2014-05-22 基于Makefile的源码精简器进行精简源码的方法 Expired - Fee Related CN104090748B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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内核模块关系提取方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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