不管你是从事于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. C#如何读写和创建INI文件

    在做项目过程中,有时需要保存一些简单的配置信息,可以使用xml,也可以使用INI文件.下面是C#中读取INI的方法,相信大部分朋友都使用过这种方式.INI文件的存储方式如下, [section] ke ...

  2. 基于jQuery标题有打字效果的焦点图

    给大家分享一款基于jQuery标题有打字效果的焦点图.之前为大家分享了好多jquery的焦点图.这款焦点图适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗 ...

  3. Linux数据归档和解压缩tar,cpio,gzip,bzip,lzma,zip命令使用

    转载:http://www.1987.name/659.html 数据压缩归档和备份是系统管理的日常工作,定期备份不可小视,归档和压缩对于系统管理员或是普通用户来说都经常用到的操作,有很多中压缩格式, ...

  4. .NET多线程执行函数

    前面几篇文章一直在写LINQ,这里为什么会出现多线程?原因是DebugLZQ在写一个LINQ综合Demo的时候遇到了多线程,便停下手来整理一下.关于多线程的文章,园子里很多很多,因此关于多线程理论性的 ...

  5. 属性通知之INotifyPropertyChanged

    为什么后台绑定的值改变了前台不发生变化了? 针对这个初学者很容易弄错的问题,这里介绍一下INotifyPropertyChanged的用法 INotifyPropertyChanged:用于绑定属性更 ...

  6. iOS - 提示信息 - UIAlertView、UIActionSheet、UIAlertController的实际应用

    1.UIAlertView(屏幕中央弹出框)(不需要服从代理) UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@" ...

  7. Unix系统安装MySQL-python出现UnicodeDecodeError错误解决方法

    今天装MySQL-python时候出现了这个错误: error: command ---------------------------------------- Cleaning up... Com ...

  8. 基调(听云)app,服务器,质量测试手段

    1. 网络质量检测 http://www.tingyun.com/tingyun_network.html

  9. 【转】学习JAVA的步骤

      好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...

  10. Linux之用户管理

    1.添加普通用户 [root@server ~]# useradd chenjiafa   //添加一个名为chenjiafa的用户[root@server ~]# passwd chenjiafa  ...