Linux下编译cscope,vim+ctags+cscope 常用技巧和命令

首先声明,本文不适用于初学者!

1 编译ctags需要的文件

#make ARCH=x86 tags

ARCH=x86 的意思是除了索引指定的x86体系结构的代码外,不索引其他体系结构的想关代码

2 编译cscope需要的文件

#make ARCH=x86 cscope

3 在vim中用ctags浏览

ts do_fork  等同于光标停在do_fork上,再按CTRL + ]

tn          下一个(next)

tp          上一个(previous)

tf          第一个(first)

tl          最后一个(last)

4 在vim中用cscope浏览

cs add cscope.out        #添加一个 connection,浏览内核时经常发现 cscope 链接断开

可以调用:cs a cscope.out

:cs show                  #显示所有 connections

:cs kill              #杀死第#号 connection,第#号就是:cs show 显示出来的

:cs reset                 #reset 所有 connections

:cs find c|d|e|f|g|i|s|t

解释:

c   查找 name 被哪些函数调用

d   查找 name 调用了哪些函数

e   egrep 句型

f   查找名为 name 的文件

g   查找 name 的定义

i   查找#include 本 name 的文件

s   查找 name 这个 C 符号

t   查找何处对 name 赋值

对 Linux 内核来说,如果既有 tags 文件,又有 cscope.out 文件,则 Vim 中:set cst

意味着使用 cscope 风格的^],也就是:tag 命令。 于是:

如果想用 ctags 找到 do_IRQ:

:ts do_IRQ

如果想用 cscope 找到 do_IRQ:

:ta do_IRQ

5 CTRL + T 返回上一步的操作处

最后给大家推荐一些内核相关的经典图书:

入门推荐: LKD2 - 《Linux 内核设计与实现-第 2 版》

从入门开始,介绍了诸如中断、系统调用、虚拟文件系统、同步与互斥、

内存管理、进程控制等方面,内容比较浅显易懂,是入门的好书。

优点: 适合入门 (个人认为,没有比 LKD2 更优秀的内核入门图书)

缺点: 内容不够深入,覆盖面不广。(对高手来说估计就像休闲材料)

3.1 ULK3 - 深入理解 Linux 内核-3rd

一本很全面的 Linux 内核原理书。 书中以 2.6.11 为示例版本,着重讲述了

x86 平台的 Linux 内核实现。

优点: 深入,全面

缺点: N/A

我觉得看完 ULK3 就是高手了:)    而且由于书中着重介绍了 X86 体系结构,也称得

上半个 x86 专家了。

3.2 《Linux 内核源代码情景分析》

以 2.4.0 为例讲解,注重代码级别的剖析,对中断、内存管理、文件系统、

SMP、PCI 和 USB、IPC 的讲解都是代码级别的深入细致。

优点: 深入

缺点: 针对的内核版本较旧,且每个「情景」都很长,不容易坚持读完。

FYI : 新手不要从《情景分析》开始学习内核,这样只会增长你的学习周期。

3.3 LDD3 - Linux 设备驱动程序-3rd

LDD3 写的很精彩。 但如果要学会写具体的驱动程序,还是得参照硬件的

datasheet,读一个内核中现成的驱动程序。

FYI : 内核中自带的驱动程序 skeleton:

drivers/net/pci-skeleton.c 和 drivers/usb/usb-skeleton.c,分别是为 PCI/USB

驱动程序员提供的参考代码。

3.4 现代体系结构上的 Unix 系统 - 内核程序员的 SMP 和

Caching 技术

这本书着重讲解各种体系结构上的 Unix 实现注意事项,e.g. SMP 的同步与互斥、

Cache 一致性问题。

优点: 作者知识面非常广,原理讲得很清楚。

缺点: 94 年的书,比较旧

3.5 Intel & AMD CPU 参考手册

最好带着问题有针对性的去读 Intel & AMD 的手册。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值