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

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

Info

Publication number
CN104090748A
CN104090748A CN201410229285.6A CN201410229285A CN104090748A CN 104090748 A CN104090748 A CN 104090748A CN 201410229285 A CN201410229285 A CN 201410229285A CN 104090748 A CN104090748 A CN 104090748A
Authority
CN
China
Prior art keywords
source code
code
simplified
makefile
file
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.)
Granted
Application number
CN201410229285.6A
Other languages
English (en)
Other versions
CN104090748B (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:将找到所有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源码进行削减,定位时需要搜索大量的无关区域,导致搜索时间加长,引入大量的重复无用的搜索结果等问题。大幅减少内核源码数量,降低了开发人员分析定位的难度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (4)

1.一种基于Makefile的源码精简器进行精简源码的方法,具体操作如下:
S1:源码精简器与远端Linux服务器通过internet相连,源码精简器中的网卡接收来自服务器的源码,并将其传给精简模块进行精简;
S2:精简模块对源码进行精简,从Linux内核Makefile中提取内核源码文件和目录与配置选项的关系,然后通过扫描.config文件,获得内核配置选项,然后将那些没有选中的配置选项对应的源码文件及目录全部删除并显示给用户;
S3:用户可查看代码或修改代码或对代码进行注释、查找、加书签;将更新后的代码通过网络上传到服务器上。
2.如权利要求1所述基于Makefile的源码精简器进行精简源码的方法,其特征在于,
源码精简器包括代码精简模块、网络输入输出模块、显示模块和用户输入处理模块;
代码精简模块对源代码的所有Makefile文件进行扫描,并对其中的所有内容过滤,得到每个文件与目录所对应的配置选项,最终形成一个二维表的形式存放,并根据这张表裁减代码;
用户通过用户输入处理模块对精简后的代码进行查找和定位,以及阅读加注释或加书签或修改。
3.如权利要求1或2所述基于Makefile的源码精简器进行精简源码的方法,其特征在于,步骤S3中将最终精简好的代码以树形图显示给最终用户,并上传给远端的服务器。
4.如权利要求1或2所述基于Makefile的源码精简器进行精简源码的方法,其特征在于,步骤S2具体的操作为:
S21:将找到所有makefiles的路径列表,根据这些路径列表,查找各个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 true CN104090748A (zh) 2014-10-08
CN104090748B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113127077A (zh) * 2021-03-29 2021-07-16 中科信安(深圳)信息技术有限公司 一种基于服务器的微内核操作系统部署方法及操作系统
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

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嵌入式化技术研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *

Cited By (4)

* 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
CN113127077A (zh) * 2021-03-29 2021-07-16 中科信安(深圳)信息技术有限公司 一种基于服务器的微内核操作系统部署方法及操作系统
CN113127077B (zh) * 2021-03-29 2023-01-31 中科信安(深圳)信息技术有限公司 一种基于服务器的微内核操作系统部署方法及操作系统

Also Published As

Publication number Publication date
CN104090748B (zh) 2017-06-06

Similar Documents

Publication Publication Date Title
US10394925B2 (en) Automating web tasks based on web browsing histories and user actions
CN107341399B (zh) 评估代码文件安全性的方法及装置
CN103092581A (zh) 一种Web前端本地开发环境的搭建方法和装置
CN112860727B (zh) 基于大数据查询引擎的数据查询方法、装置、设备及介质
CN101162485A (zh) 一种计算机恶意代码处理方法和系统
CN108197091B (zh) 一种创建数据表的方法、系统及相关设备
US9002864B1 (en) Cross-platform conversion of encoded mobile app store links
CN101571860A (zh) 动态网页生成方法和装置、提取结构化数据的方法和装置
CN1526104A (zh) 分析结构化数据
CN106415593A (zh) Qr码识别处理系统
CN104598570A (zh) 资源的抓取方法及装置
CN111563015A (zh) 数据监控方法及装置、计算机可读介质及终端设备
CN110688315A (zh) 接口代码检测报告生成方法、电子装置及存储介质
CN103177022A (zh) 一种恶意文件搜索方法及装置
CN104090748A (zh) 基于Makefile的源码精简器进行精简源码的方法
CN113268245A (zh) 代码分析方法、装置及存储介质
CN103473350B (zh) 文件处理方法及设备
CN114036561A (zh) 信息隐藏、信息获取方法、装置、存储介质及电子设备
CN103500109A (zh) 一种用于实现文件收集、软件包自动安装的方法及装置
CN105207830A (zh) 一种终端信息的检测方法、装置及终端
CN112948247A (zh) 应用程序的操作回放的处理方法、系统、设备和介质
CN105808623A (zh) 一种基于搜索的页面访问事件关联方法和装置
CN111796833A (zh) 代码语言转换方法、系统、设备及存储介质
CN106484912A (zh) 一种云盘资源的处理方法和装置
CN103064967A (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
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

Addressee: XIDIAN University

Document name: Notification to Go Through Formalities Rectification of Restoration of Right

DD01 Delivery of document by public notice
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170606

Termination date: 20190522

CF01 Termination of patent right due to non-payment of annual fee
DD01 Delivery of document by public notice

Addressee: Su Ruidan

Document name: Notice of approval of right to request

DD01 Delivery of document by public notice