当前位置:
文档之家› Linux内核裁剪和定制方法
Linux内核裁剪和定制方法
1.2
Linux 源码阅读工具
俗话说“工欲善其事,必先利其器” ,面对几百兆的 Linux 内核代码,要阅读、查看或 者搜索其中的代码,大部分初次接触到 Linux 内核代码的开发人员,都有无从下手的感觉。 下面推荐几个源码阅读和索引工具,能为后续内核开发提供一些便利。 1.2.1 SourceInsight Source Insight 是 Windows 平台下一款流行度极高的源码阅读和编辑工具。不少 Linux 开发人员还是习惯于在 Windows 下进行源码编辑,甚至查看和编辑 Linux 内核源码,依然 在 Source Insight 中完成。 说明:Source Insight 是一款版权软件,需要自行解决版权问题。 安装 Source Insight 软件后,新建一个工程,取名并指定数据存放位置,如图 0.1 所示。
图 0.4 在 Source Insight 中阅读源码
1.2.2 Eclipse Eclipse 是一个跨平台 IDE,既能运行于 Windows 平台,也能在 Linux 下运行。不少习 惯于图形界面操作的开发人员,在 Linux 下则习惯于用 Eclipse 来查看和编辑 Linux 源码。 如果仅仅是在 Eclipse 中查看 Linux 内核源码,则可以不必事先安装交叉编译器,否则 则须事先安装好交叉编译器。 创建内核源码工程。点击 FileNewProject,开始创建工程,在工程创建界面选择创 建 C 工程,如图 0.5 所示。
图 0.8Vi/Vim 的函数列表侧栏
如果在本地桌面,用 Gvim 打开 C 文件,使用起来比较接近 IDE 集成环境。用鼠标双 击函数即可跳转到函数定义的地方,CTRL+鼠标右键即可回退到原来所在位置。更多实用 特性,还需要在实际操作中体验。 1.2.4 LXR LXR 是 Linux Cross Referencer 的缩写,是一个比较流行的 Linux 源码查看工具,当然 也不仅仅局限于查看 Linux 源码。LXR 的下载地址为:,参考该网站 的安装说明,很容易在本机搭建一个本地 LXR 用于源码查看。 如果不想搭建本地 LXR,可以直接浏览已经搭好的 LXR 网站,推荐两个网站:一个是 开源中国网站提供的 Linux 源码在线阅读 ,另一个是 网站,前者速度较快,但是提供的 Linux 内核版本较少,后者则 提供的版本较多。网站提供了源码阅读、关键字搜索和自由文本搜索功能。两者的网页快照 分别如图 0.9 和图 0.10 所示。
图 0.1 新建工程
点击 OK 按钮,进入工程设置界面,如图 0.2 所示。
图 0.2 工程设置
然后添加源码。浏览选中 Linux 内核源码文件夹后,点击“Add Tree”按钮,将内核源 码树的全部文件添加到工程中,如图 0.3 所示。
图 0.3 添加内核源码
添加完成,即可在 Source Insight 中进行源码阅读和编辑了,如图 0.4 所示。
Linux 内核裁剪和定制
1.1 Linux 内核开发简介
这里所说的“Linux 内核开发”仅仅是指嵌入式 Linux 产品开发中内核和驱动相关开发 工作,与 Linus 所领导的内核开发团队的内核开发有很大不同。 产品开发中对内核进行二次开发,需要开发人员具备如下一些基本技能和背景知识: 具备操作系统的基本知识,理解操作系统原理,最好了解 Linux 操作系统; 内核绝大部分都是 C 语言编写的,C 语言是必备技能; 内核是用 GNU C 编写的, 尽管符合 ISO C89 标准, 但还是使用了一些 GNU 扩展, 所以对 GNU C 的一些扩展也必须有所了解; 对 Linux 内核源码基本分布有大致了解; 产品级的内核开发通常还包括一些内核驱动工作, 对外设工作原理和驱动编写也必 须有一定的了解。
图 网页快照
图 网页快照
$ sudo apt-get install exuberant-ctags
3. 源码阅读和跟踪 进入准备查看的源码所在目录,首先生成 tags 文件:
$ ctags -R
执行时间长短取决于源码数量的多少, 执行完毕, 在当前目录下可看到一个 tags 文件。 源码越多,执行时间越长,产生的 tags 文件也越大。 注意:如果修改了源码,代码行号发生了变化,需要重新生成 tags 文件。 (1)查看函数等定义。用 Vi/Vim 打开一个 C 文件。若想知道某个函数、变量、结构 或者宏定义在什么地方定义,先将光标移动到函数(变量、结构或者宏定义)上,然后按 CTRL+]即可。查看后,按 CTRL+o 可回到原来所在位置。 (2) 查看文件函数列表。 打开 C 文件后, 在 Vi/Vim 的命令状态下输入:TlistToggle (Vi/Vim 的命令输入支持补全) , 在 Vi/Vim 左边就会出现函数列表侧栏, 如图 0.8 所示。 按 CTRL+ww (2 次 w) ,可在列表和代码查看区间切换。
图 0.5 创建 C 工程
点击 Next, 在 C Project 界面的 Project name 栏中填写工程名称, 去掉 “Use default location” 的勾, 点击 Browse 将 Location 设置为 Linux 内核源码目录, 如图 0.6 所示。 如果不在 Eclipse 中编译内核,则使用 Linux GCC 即可,否则请使用安装好的 Cross GCC。
图 0.6 导入 Linux 内核源码
然后点击 Finish, 完成 Linux 内核源码导入, 在 Eclipse 中即可进行代码阅读和编辑了, 如图 0.7 所示。图 0Βιβλιοθήκη 7 在 Eclipse 中浏览内核源码
在 Eclipse 中进行源码跟踪,只需选择函数、变量或者宏定义后按 F3 即可。更多的操作 可在 Navigate 中找到。 1.2.3 vim+ctags+cscope Vi/Vim 是一个文本编辑器,在 Vim 中能高效的实现代码编辑。但 Vim 的功能不仅仅是 一个文本编辑器,借助 ctags 和 cscope 的配合,Vim 能实现堪比图形 IDE 环境的源码编辑和 阅读功能,在某种程度上甚至比图形 IDE 更方便。 Vi/Vim 的安装不再介绍了。如果不是通过远程登录在远程服务器上工作,而是在本地 桌面系统操作,还可以用 gvim 启动 Vi 编辑器。 1. Taglist Taglist 是 Vim 的一个源码浏览插件,可从 网站获得。下载到压缩包 后,在本地解压,然后将解压得到目录中的 plugin 目录复制到~/.vim 目录。如果用户主目录 下没有.vim 目录,则建立一个这样的目录即可。 2. Ctags Ctags 是一个用于产生 tags 文件的软件,可以下载源码进行编译安装,在 Ubuntu 下, 可通过 apt-get 进行安装: