解决linux kernel代码过大,source insight同步时间太长,垃圾文件过多的问题
<div class="operating">
<a class="href-article-edit slide-toggle">版权</a>
</div>
</div>
</div>
</div>
<div id="blogColumnPayAdvert">
<div class="column-group">
<div class="column-group-item column-group0 column-group-item-one">
<div class="item-l">
<a class="item-target" href="https://blog.csdn.net/qq_30027083/category_8894838.html" target="_blank" title="工具" data-report-click="{"spm":"1001.2101.3001.6332"}">
<img class="item-target" src="https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="">
<span class="title item-target">
<span>
<span class="tit">工具</span>
<span class="dec">专栏收录该内容</span>
</span>
</span>
</a>
</div>
<div class="item-m">
<span>1 篇文章</span>
<span>0 订阅</span>
</div>
<div class="item-r">
<a class="item-target article-column-bt articleColumnFreeBt" data-id="8894838">订阅专栏</a>
</div>
</div>
</div>
</div>
<article class="baidu_pl">
<div id="article_content" class="article_content clearfix">
<link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-1a98987dfd.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-25cebea3f9.css">
<div id="content_views" class="markdown_views prism-atom-one-light">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<h2><a name="t0"></a><a id="_0"></a>概述</h2>
我们做linux开发都会使用神器sourceinsight,单就我而言,不用它,我就看不懂代码。若是单片机代码,使用source insight也许不会有什么烦恼。但linux kernel开发使用source insight看代码就会发现
1、添加一个source insight工程是多么的痛苦,建立一个工程是非常巨大的,关联所有变量的时间是消耗不起的,短则1 - 2小时,长则4 5个小时。至少对于我来说非常难受,而且有时候抽风一下变量没有关联上,又得重新同步一下。这之间将会花掉非常多的时间。
2、跳转变量定义可能会显示几十个地方,也很难轻易快捷的选中真实定义。
这篇文章就是为了解决上述问题而做的一个记录,希望可以帮助到大家。
最后效果: 过滤kernel或uboot中所有没有被编译到的文件,减少工程文件树。精确添加所有编译所用到的文件
在此膜拜git大佬tonyho,提供的脚本。
使用流程
这里我用sourceinsight4.0,其实版本什么的无所谓啦。
-
去git大佬tonyho仓库中下载PF_Prj_Gen.sh脚本,仓库地址:https://github.com/tonyho/Generate_Kernel_Uboot_Project_forIDE
下载得到PF_Prj_Gen.sh脚本。随便放个地方吧。 -
首先一定要编译一下kernel源码,如果是建立uboot,那么就编译uboot源码。保证编译通过。
-
然后命令行执行PF_Prj_Gen.sh脚本,命令:./PF_Prj_Gen.sh android8.0_imx6/vendor/nxp-opensource/kernel_imx/ ./outfile, 结果如下:
可以看到,我的工程中kernel编译过程中依赖的文件为2496+3440+3441个。若是用别的方式添加,可能会添加多达几十万个文件。
赋予PF_Prj_Gen.sh可执行权限。PF_Prj_Gen.sh脚本参数为PF_Prj_Gen.sh param1 param2, 其中 param1为kernel或者uboot源码主目录,param2为执行PF_Prj_Gen.sh后生成文件所存放的目录,param2必须不存在。 -
进入outfile文件中找到FileList_SourceInsight.txt文件,这个就是我们所要的。
-
接下来建立sourceinsight工程,到添加文件时选择add from list。然后选择FileList_SourceInsight.txt文件。等添加完文件点Close完成文件添加。
6.最后rebuild工程。Project->rebuilt project,然后就可以使用啦。简直清爽!!!
问题补充
- SourceInsight工程应该建立在kernel根目录下,因为通过脚本生成的list是相对路径而不是绝对路径。