Source Insight建工程之Kernel

本文详细介绍如何使用SourceInsight工具高效地管理Linux内核源码。从建立工程文件夹到创建工程,再到如何筛选并添加关键文件及目录,帮助读者掌握Linux内核源码的组织与管理技巧。
不管你是从事于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.6Where 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 中设置和浏览 Linux 内核工程 #### 创新项目并导入内核源码 为了在 Source Insight 中高效工作,可以按照特定流程来创新的工程项目并导入 Linux 内核代码。这不仅有助于减少项目的整体体积,还能提高工具性能以及提升代码导航体验。 当首次尝试加载完整的 Linux 内核时,可能会遇到由于文件数量庞大而导致的效率低下问题[^2]。因此议采用一种更为精确的方式来进行文件的选择性导入。通过编写或获取专门针对 Linux 内核设计的导入脚本,可以从众多文件中筛选出真正参与编译的部分,从而构一个更加精简有效的开发环境。 #### 使用自动化脚本优化导入过程 对于希望进一步简化操作的人来说,存在一些现成资源可以帮助实现这一点。例如 GitHub 上有一个开源项目提供了用于生成适合 IDE 的 Kernel 和 Uboot 工程结构的 Python 脚本。利用此类工具可以根据实际需求定制化地挑选所需组件,并将其无缝集成至 Source Insight 当中。 #### 配置 Windows 文件夹属性以支持大型源码库管理 除了上述方法外,在操作系统层面做出适当调整同样重要。具体来说就是确保启用了适用于 Linux 子系统的 Windows 功能选项,这样可以在一定程度上改善跨平台协作中的兼容性和稳定性表现[^4]。 #### 添加额外类型的文件如设备树定义 考虑到某些特殊应用场景下的需求,比如涉及到嵌入式系统开发时经常要用到的 Device Tree Blob (DTS/DTSI),也应该学会如何把这些非标准 C/C++ 源文件加入到现有工程里去。通常情况下只需遵循官方文档指导完成相应格式转换即可顺利解决问题[^5]。 ```bash # 示例命令:将 DTS 文件关联到 SI 项目 siaddfiles -p MyKernelProject *.dtsi;*.dts ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值