不管你是从事于Linux内核工作还是出于兴趣爱好,Linux内核源码都是非常好的学习资源。意味着就要经常的和内核源码大交道,那么软件工具就是少不了的。在Windows系统上确实有着许多好用的软件,这点还是可以肯定的。对于像内核这种复杂庞大的源码树,Source Insight工具便是非常适合且好用的了。那么怎样去管理Linux内核源码树呢?很明显Linux操作系统支持不同的体系结构的CPU,在/ARCH/目录下有alpha、i386、parisc、sparc、arm、mips等各种具体架构的CPU相关的目录。那么在建立一个学习用的内核源码树工程时,当然我们只要添加我们所关心的CPU目录和一些通用的目录和文件。

一、建立工程文件夹

最好建立一个自己的管理Source Insight所有工程文件夹(例如在D:\建立文件夹 D:\SourInProject),然后分别创建单独的工程文件夹。在这里我们建的是Linux-2.6.22.6工程,那么就建立一个文件夹名为:Linux-2.6.22.6Pro,在里面放置linux-2.6.22.6源码包,和一个准备放置Source Insight所创建的linux-2.6.22.6工程包SourInPro。这样就很清晰,源码和工程包单独放在一个命名为Linux-2.6.22.6Pro下,即不同的工程都带有一个源码包和一个创建后的工程包。

二、如何创建工程

(1)、首先打开Source Insight软件,配置好软件所认识的文件后缀,点击菜单栏上Options->Document Options,在Document Type下拉列表中,选择C Source File,然后在右边File
filter:文本框中添加一些重要文件后缀;*.S;*.lds;Kconfig;*defconfig;*.in;Makefile等(否则点击Add Tree添加目录树时,一些重要文件不被加入到工程,则要手动一个个加入)。然后再点击菜单栏上的Project->New Project,在弹出的New Project对话窗口,New
project name
:(工程名)在这填Linux-2.6.22.6,Where do you want to store the project data files?(你想把你的工程文件存放在哪里),在这我们填在上一步创建的D:\SourInProject\Linux-2.6.22.6Pro\SourInPro。然后一路OK,出现一个名为:Add
and Remove Project Files
对话框,下面我们就针对此对话窗口操作;

(2)、在Add and Remove Project Files对话框中,我们点击左边Directory我们预先放好的linux-2.6.22.6的源码包,此时在右边File Name将会显示所有的源码目录文件。那么我们如何选择哪些文件是我们以后查看源码更为紧密关联的呢?

(3)第一步,我们可以把所有的文件都加进工程,毕竟大部分目录文件还是通用的,然后我们去除一些我们所不关心的目录和文件。点击右边File Name 框中顶层目录..(一个向上的箭头标识),这里把Show only known document types(所熟知的文件类型)去掉勾选,否则很多重要的文件像Makefile、Kbuild等其它的文件没有被加入。然后点击Add
All 在对话框中Add to Project 钩上Recursively add lower sub-directories(意思递归添加子目录文件);

(4)、显然在/ARCH/目录下有alpha、i386、parisc、sparc、arm、mips等各种具体架构的CPU相关的目录。首先我们先把整个目录Remove Tree,然后再添加我们所关心的目录。在这里我们进入Arch中的我们关心的Arm目录,首先看到一些单独的文件(比如Kconfig、Kconfig.debug等,一般顶层的单独文件都是通用的),我们点击Add
All
 在弹出的Add to Project对话框中去掉Include top level sub-directories。然后看到像Boot、Common、Configs、Kernel、Lib目录,这些在Arm架构中都是些通用的目录,我们依次选中它们,点击Add Tree;接着是一些Mach-xxx目录,那我们是哪个Mach呢,往后看有个Mach-s3c2410目录,就是我们的Mach目录,点击Add
Tree加入工程。再接着后面的目录看上去就是通用的,但发现有几个目录是Plat-xxx,显然我们属于Plat-s3c24xx,所以从Mm目录开始,一直到最后目录(但中间Plat-xxx目录,我们只选Plat-s3c24xx),我们点击Add Tree。这样整个Arch目录我们已经搞定。

(5)、回到顶层目录我们再往下看,发现一个Include目录,同样里面也会有很多不同体系结构的目录。进入Include目录,发现有很多Asm-xxx的目录,从名字上知道,Asm-arm是arm相关的头文件,Asm-i386是x86相关的头文件。显然我们不需要那么多不相关的目录,我们回到顶层目录,选中Include目录,点击Remove
Tree
去除整个目录,然后再进入添加我们关系的目录和文件。同是ARM架构的也有不同的架构,进入/Include/Asm-arm目录,这里会有一些单独的文件,我们点击Add All 在弹出的Add to Project对话框中去掉Include top level sub-directories,待会我们再处理这些子目录。进入/Include/Asm-arm目录,同样把这里面的许多的单独文件先加入,同上步一样操作。然后在这里我们发现Arch-s3c2410是我们所关心的,进入/Include/Asm-arm/Arch-s3c2410目录,点击Add
All加入所以文件。再回到/Include/Asm-arm目录,后面Hardware、Mach、Plat-s3c24xx目录都是通用的,我们选中它们,点击Add Tree加入到工程。这时,/Include/Asm-xxx目录我们已经搞定Asm-arm。接着回到/Include目录,发现有个Asm-generic目录,从名字上就知道是个通用的目录,我们选中它,Add Tree加入工程。至此,/Include/Asm-xxx其它目录我们不用考虑。接着从Crypto目录开始到最后目录Video目录,都是一些通用的目录和文件,从Crypto目录开始,按shift,选择到最后一个目录,点击Add
Tree加入剩下的目录。此时/Include目录我们全部搞定;

(6)、最后再回到linux-2.6.22.6顶层目录,剩下的没有分析的目录都是一些通用的目录,在第一步我们已经全部加入此时我们不用理会。关闭Add and Remove Project Files对话窗口;

(7)最后我们点击Source Insight菜单栏下的Project->Synchronize Files进行同步生成索引。至此,一个比较满意的工程建立完毕。

Source Insight建工程之Kernel的更多相关文章

  1. 【转】完整精确导入Kernel与Uboot参与编译了的代码到Source Insight,Understand, SlickEdit

    The linux kernel and u-boot contains lots of files, when we want to broswe the source code,we just w ...

  2. Win + Linux下Source Insight 替代方案

    需要阅读大量的系统源码,还有开源框架和好的源码等,需要寻求轻量,多快好省的editor, 最好有markdown语法的支持,支持重构,跳转调用,定义等... 自动补全... 目前看来,windows上 ...

  3. Perforce 与Source Insight, Visual Studio集成

    转自:http://shashanzhao.com/archives/837.html 1.Perforce 首先需要为perforce设置系统环境变量,以便perforce命令行可以正常使用. 环境 ...

  4. Linux下Source Insight的安装和汉化

    原创文章,转载请注明出处. 工欲善其事,必先利其器.Source Insight绝对是阅读C和C++代码的利器,另外,Source Insight的体量很小,安装便捷,显示直观,比vim+cscope ...

  5. ubuntu中source insight打不开,报错pagefault的解决方法

    在ubuntu中装了source insight用来看代码. 但用了一段时间后,有一天突然就发现打不开了,打开马上会弹出wine的错误,详细信息里面是什么PageFault 0x0000008之类的, ...

  6. Source Insight常用功能设置

    熟悉工具的使用能在一定程度上提高工作效率,但工具永远只是工具,大家要把重点放在内功的修炼上. 符号导航 符号(变量.宏定义.结构定义.枚举.函数等等)在SI 中的检索非常方便.Ctrl+鼠标左键或Ct ...

  7. Source Insight编辑器配置

    Sublime Text 无疑是一款很优秀的编辑器和阅读器,可惜对于中文编码不支持,网上的ConvertTOUTF8存在BUG,经常转码失败,体验很不好. 现在开始使用source insight,这 ...

  8. 给Source Insight做个外挂系列之五--Insight “TabSiPlus”

    “TabSiPlus 外挂插件”主要有两部分组成,分别是“外挂插件加载器”和“插件动态库”.“插件动态库”完成Source Insight窗口的Hook,显示Tab标签栏,截获Source Insig ...

  9. 给Source Insight做个外挂系列之六--“TabSiPlus”的其它问题

    关于如何做一个Source Insight外挂插件的全过程都已经写完了,这么一点东西拖了一年的时间才写完,足以说明我是一个很懒的人,如果不是很多朋友的关心和督促,恐怕是难以完成了.许多朋友希望顺着本文 ...

随机推荐

  1. 【转】如何使用KeyChain保存和获取UDID

    本文是iOS7系列文章第一篇文章,主要介绍使用KeyChain保存和获取APP数据,解决iOS7上获取不变UDID的问题.并给出一个获取UDID的工具类,使用方便,只需要替换两个地方即可. 一.iOS ...

  2. 关于Android中TextView显示多个空格

    一.直接填写文字,输入多少,显示多少,如下: android:text="AAA     AAA"     ————————>显示:AAA     AAA 二.通过设置str ...

  3. LeetCode13 Roman to Integer

    题意: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...

  4. Xcode 8 用处不大的新特性:CLANG_WARN_INFINITE_RECURSION

    来源:酷酷的哀殿 链接:http://www.jianshu.com/p/067f4674f75f Xcode 8 的 clang 新的警告控制,当所有路径都通过一个函数都调用自身时,会产生一个警告 ...

  5. 关于变量在for循环内外定义的思考

    在c#或java里面,我们通常会这样写for循环: ;i<;i++) { Console.WriteLine(i); } 前一阵子,我突发奇想,如果按照下面这样写,会不会比上面的运行效率高一些: ...

  6. Good subsequence( RMQ+二分)

    Description Give you a sequence of n numbers, and a number k you should find the max length of Good ...

  7. [转]epoll技术

    在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就是epoll. 相比于select,epoll最大的好处在于它不会随着监听fd数目 ...

  8. 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9374935 作者:七十一雾央 新浪微博:http:// ...

  9. 索引与优化like查询

    1. like %keyword    索引失效,使用全表扫描.但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描. 2. like keyword%    索引有 ...

  10. Spring学习总结三——SpringIOC容器三

    一:spring容器自动装配注入 为了减少xml中配置内容,可以使用自动装配注入,代替setter注入,只需要在 bean对象配置中添加属性autoWire即可,那么在类中就会自动扫描setXXX() ...