不管你是从事于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. oracle视图总结

    视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表.视图是存储在数据字典里的一条select语句. 通过创建视图可以提取数 ...

  2. 一款基于jQuery多图切换焦点图插件

    这次要给大家分享的也是一款jQuery图片滑块插件,之前有介绍过不少实用的jQuery焦点图插件和jQuery图片滑块插件,比如jQuery左侧Tab切换的图片滑块插件.它的特点是可以同时切换多张图片 ...

  3. [Buzz.Today]2013.08.06

    # 用简单方案解决80%的问题,再慢慢解决剩下20% [先完成,后完美]美国工程院院士.Google Fellow辛格的哲学:先用个简单方案解决80%的问题,再慢慢解决剩下20%.许多优秀人才都败在这 ...

  4. Spring MVC学习笔记 01

    applicationcontext.xml的配置 <?xml version="1.0" encoding="UTF-8" ?> <bean ...

  5. [Java] HashMap详解

    转自:http://alex09.iteye.com/blog/539545 HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 Hash ...

  6. Android使用MVP时应该注意的问题

    生命周期:因为Presenter是View创建的,我们需要确保完全地理解View的生命周期,特别是因为它将最有可能去处理状态更新和异步数据.举个例子,每一个Presenter应该在View destr ...

  7. Js 实现五级联动

    js实现多级联动的方法很多,这里给出⼀种5级联动的例子,其实可以扩展成N级联动,在做项目的时候碰到了这样⼀个问题但是有不能从数据库中动态的加载这些选项,所以只有想办法从单个的页面着手来处理了,应为项目 ...

  8. vim 使用记录

    编辑 Ctrl + x         数字减1 Ctrl + a         数字加1 di +  {char}    Delete Inner Character  # di": & ...

  9. yum中baserul路径中的空格

    配置yum源时,比如指定本地挂载的光盘时,路径中包含空格.在不使用链接的情况下,用"\"进行转义不行,把路径加单.双引号也不可行.正确做法是把空格用%20代替.同理,其他不可识别的 ...

  10. cookie与session的区别与联系

    cookie是什么?  cookie是存在于客户端(浏览器). cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的.浏览器检查所有存储的cookie,如果某个cookie所声明的作用范 ...