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 的手冊。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Linux下编译cscope,vim+ctags+cscope 常用技巧和命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux重定向文件不存在,shell
- 下一篇: linux iconv函数失败,Linu