近期想阅读学习下Linux的内核源码,学习目的一是学习下Linux的启动流程部分,二则是学习了解下Linux内核5个子系统如何实现,三有机会自己裁剪编译Linux内核;前期为了更快速和自己习惯快速上手还是采用了Windows平台下的代码阅读、编译工具Source Insight3.5,http://www.sourceinsight.com/上边下载了个30天试用版本,安装过程就不说了比较简单;
    接下来就是如何获取Linux内核源代码,主要有两种方法,一Linux系统上的程序源代码弄到Windows平台下,可以通过在linux平台上将/usr/src目录下的文件拷贝到Windows平台的分区上,二从网上光盘直接拷贝文件到Windows平台的分区来实现,本人采用第二种方法,从https://www.kernel.org/网站下载了linux-2.6.35.14.tar.xz内核压缩文件,选择2.6.35.14版本原因主要是我在VMware虚拟机上安装的Linux版本是Fedora14,内核版本是linux-2.6.35.6便于实际测试观察,文件可以在Windows下使用7Zip解压缩,我是分两步先使用7Zip提取出linux-2.6.35.14.tar文件,然后继续使用7Zip提取出linux-2.6.35.14源码文件;接下来简单记录下使用Source Insight3.5如何创建linux-2.6.35.14源码阅读工程文件:
    1.创建Linux内核源码的一个Source Insight工程
    1.1Linux内核主要是使用C编写的同时启动等文件会使用汇编,而
Source Insight默认支持文件中没有以“.S”结尾的汇编文件,通过菜单“Options”->"Document Options"调Document Options设置窗口,选Document Type为“C Source File”在File filter:中增加*.S;*.lds;Kconfig;*defconfig;*.in;Makefile等(否则点击Add Tree添加目录树时,一些重要文件不被加入到工程,则要手动一个个加入):
Linux内核源码阅读及windows工具之Source Insight3.5-LMLPHP
 1.2 点击菜单“Project”->“New Project”,建立新工程,如下图:
Linux内核源码阅读及windows工具之Source Insight3.5-LMLPHP

接受默认选择,如果,硬盘空间足够,可以将第一

个复选框选上,

该选项将会需要与源代码大致同等的空间来建立一个本地数据库以加快查找

的速度


接受默认选择,如果,硬盘空间足够,可以将第一

个复选框选上,

该选项将会需要与源代码大致同等的空间来建立一个本地数据库以加快查找

的速度

接受默认选择,如果,硬盘空间足够,可以将第一个复选框选上,该选项将会需要与源代码大致同等的空间来建立一个本地数据库以加快查找的速度
Linux内核源码阅读及windows工具之Source Insight3.5-LMLPHP
单击OK,然后出现下图增加文件都工程里:
Linux内核源码阅读及windows工具之Source Insight3.5-LMLPHP
选择内核源码文件目录,这里把Show only known document types(所熟知的文件类型)去掉勾选,否则很多重要的文件像Makefile、Kbuild等其它的文件没有被加入。点击“Add All”和“Add Tree”两个按钮可以将选中目录的所有文件加入到工程中,其中“Add All”选项会提示加入顶层子目录中的文件(Include top level sub-directories)和递归加入所有文件(Recursively add lower sub-directories)两种方式,而“Add Tree”相当于“Add All”选项的递归加入所有文件,故此处直接单击“Add Tree”,然后点击确定按钮。点击Close关闭添加文件窗口,进入使用界面窗口如下图所示,其中,右边的那个窗口(Linux-2.6.35.14Project,即工程窗口)缺省按照字母顺序列出当前工程中所有的文件。
Linux内核源码阅读及windows工具之Source Insight3.5-LMLPHP
点击右侧文件列表窗口中某一文件,出现上图界面,左侧窗体符号窗口(Symbol window),可以从中快速的找到当前文件中的变量、函数,宏定义等;中间是主窗口,可以在里面阅读、编辑代码;下面是上下文窗口(Context window),窗体下边有一排按钮,左边的窗口(21142.c)从左至右分别为:按字母顺序排列所有标记、按照文件中行数顺序排列标记、按照类型排列标记、浏览本地文件标记、标记窗口属性。右边的窗口(Linux Project)从左至右分别为:按字母顺序文件列表、显示文件夹、按照文件类型归类文件、全部文件的所有标记列表、按照标记类型归类标记、跳转到定义处、显示标记信息、浏览工程标记、查找函数调用、工程属性,其中全部文件的所有标记列表选项可能要一段时间抽取标记,同步到数据库去,如果开始选择了建立标记数据库,将会在今后节省同步时间;
注:困扰小问题,在File Name输入“相应盘符”例如“E:\”,然后点击Add就能看见相应盘了
02-02 04:50