閑來無事,於是又想進到Linux內核里面去逛逛了,但是只裝了個ctags的工具,雖然說它可以在源碼中到處跳動查看代碼,但是感覺應該會有更好的方法。
雖然說可以轉到windows下面去使用SourceInsight工具來閱讀源碼,但是對於我們這種經常使用vim編輯器的人來說,還是打算使用vim比較舒服一點,這也許是習慣了吧,再說系統切換也麻煩,也不喜歡使用虛擬機。於是找了些資料研究了下,原來只需幾個工具(插件)配合起來使用就很方便了,也能達到IDE的強大效果。
我使用的系統是ubuntu10.04的,只需要3個工具就可以輕松閱讀內核源代碼了,分別是: ctags、cscope、taglist ,下面就來看如何安裝使用他們吧。
一、安裝ctags
它在瀏覽代碼是非常方便,可以在變量、函數定義之間來回的跳動,這些網上有很多介紹,這里不啰嗦了。
在終端中輸入: sudo apt-get install ctags 即可安裝ctags,如果沒有找到軟件包,還可以輸入: sudo apt-get install exuberant-ctags ,如果還是不行,那么可以到官網下載源碼來編譯安裝,安裝方法相信都會吧,也就是安裝軟件的三部曲:./configure 、make 、make install 。
下載地址為: http://nchc.dl.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz
完了以后,可以測試下安裝是否成功,在終端運行: ctags --version ,如果打印出如下字符說明安裝正確:
安裝完成以后,進入到源代碼目錄中,終端輸入如下命令:ctags -R . ,將在當前目錄下生成文件 tags
然后打開源文件,光標定位到函數或者宏名上,按Ctrl + ],就可以跳轉到該函數或者宏的定義處,要想退回來則使用Ctrl + o 或者 Ctrl + t ,也可以直接在終端輸入 vim -t 函數名,也可以查看函數定義。
二、安裝cscope插件
在終端輸入以下命令:sudo apt-get install cscope 、如果不行,同樣可以到官網下載源碼來自行安裝。
下載地址為:http://sourceforge.net/projects/cscope/files/
使用方法:
在終端下,切換到源碼所在目錄后,輸入命令:cscope -Rbkq
參數意義:R 表示把所有子目錄里的文件建立索引
b 表示僅建立符號數據庫,不啟動自帶的用戶界面
k 表示在生成索引時,不搜索/usr/include/目錄
q 表示生成cscope.in.out 和 cscope.po.out文件,加快cscope的索引速度
完成后將在當前目錄生成這么幾個文件:cscope.in.out 、cscope.po.out 和 cscope.out
修改~/.vimrc配置文件,在文件中加入如下代碼:
if filereadable("cscope.out")
cs add cscope.out
endif
這樣做的目的是為了在每次使用vim打開文件是都輸入命令 :cs add cscope.out
如果想使用快捷鍵進行快捷查找的話,那么需要在~/.vimrc文件中加入如下代碼:
三、taglist插件
不需要安裝,只需要簡單配置就可以了,但是需要ctags的支持。
下載地址為:http://www.vim.org/scripts/download_script.php?src_id=7701
下載完成后,解壓開壓縮文件有兩個目錄,plugin和doc ,分別將plugin目錄下的taglist.vim復制到~/.vim/plugin/下,將doc目錄下的taglist.txt文件復制到~/.vim/doc/下,這樣就可以了。
然后再將以下代碼加入到~/.vimrc配置文件中:
在taglist窗口中,還可以使用下面的快捷鍵:
<CR> 跳到光標下tag所定義的位置,用鼠標雙擊此tag功能也一樣
o 在一個新打開的窗口中顯示光標下tag
<Space> 顯示光標下tag的原型定義
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出現順序排序間切換
x taglist窗口放大和縮小,方便查看較長的tag
+ 打開一個折疊,同zo
- 將tag折疊起來,同zc
* 打開所有的折疊,同zR
= 將所有tag折疊起來,同zM
[[ 跳到前一個文件
]] 跳到后一個文件
q 關閉taglist窗口
<F1> 顯示幫助
可以用“:TlistOpen”打開taglist窗口,用“:TlistClose”關閉taglist窗口。或者使用“:TlistToggle”在打開和關閉間切換。
四、現在都安裝完畢了,可以寫一個小的腳本文件來建立索引
例如名字就叫作cscope.sh,在里面加入以下內容:
#!/bin/bash
find . -name *.h >> cscope.files
find . -name *.c >> cscope.files
find . -name *.cpp >> cscope.files
cscope -Rbkq -i cscope.files
ctags -R .
保存退出,如果還需要加入更多的文件,則繼續 find 即可
修改文件權限:chmod a+x cscope.sh ,可以將這個腳本放到/bin/目錄下
切換到源代碼目錄,執行 cscope.sh 即可生成索引並使用了