ubuntu16.04 LTS,64操作系统。
$sudo apt-get install ctag cscope
查询ctag和cscope有没有安装成功,可以尝试下面的命令
$cscope --version
$ctag --version
3.1 确切地说taglist和nerdtree不需要安装,这2个东西其实是vim插件
taglist下载地址(截止到目前有效):https://vim.sourceforge.io/scripts/script.php?script_id=273
taglist下载来后,是一个taglist.vim文件
nerdtree下载地址(截止到目前有效):https://www.vim.org/scripts/script.php?script_id=1658
nerdtree下载来后是一个zip文件,使用命令
$unzip NERD_tree.zip -d yourpath
yourpath是一个由你自己指定的目录,如果此目录不存在会自动创建,比较随意。我自己这样操作
$unzip NERD_tree.zip -d ./NERD
3.2 打开NERD目录可以看到如下目录与文件
$ls ./NERD
autoload doc LICENCE plugin syntax CHANGELOG lib nerdtree_plugin README.markdown
到了这一步,ctag+cscope+taglist+Nerdtree已经全部准备好了。
4.1 检查有没有.vimrc文件和.vim目录
$ls ~/.vimrc
$ls ~/.vim
通常刚刚安装好ubuntu操作系统后,.vimrc文件是存在的,.vim目录是不在的。如果文件或者目录有不存在的清形,自己创建。操作命令如下:
$cd ~
$touch .vimrc #创建文件
$mkdir .vim #创建目录
4.2 把3.2中NRED目录的所有东西拷贝到.vim目录下,如果.vim目录下存在与NERD下同名的目录,那么只把同名的目录中的文件copy到.vim中的那个目录去即可
4.3 把3.1下载的taglist.vim放到~/.vim/plugin目录下面
4.4 ctag生成
在内核源代码根目录下执行下面命令(这条命令会花几分钟的时间)
$ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
执行完成后,在源代码根目录下一定能看到一个文件tags,执行命令
$file tags
tags: LaTeX document, ASCII text
输出如上结果。
接下来配置tags的路径,打开文件~/.vimrc
在文件中添加2行
set tags+=/yourpath/tags #tags文件的绝对路径
let Tlist_Ctags_Cmd = '/usr/bin/ctags' #ctags命令的路径
注意:ctags的命令路径需要自己查询,查询命令为
$whereis ctags
执行后会打印出ctags的命令路径。
#!/bin/bash
LNX=/home/youself/linux-2.6.39
cd /
find $LNX \
-path "$LNX/arch/*" ! -path "$LNX/arch/x86*" -prune -o \
-path "$LNX/crypto/*" -prune -o \
-path "$LNX/Documentation/*" -prune -o \
-path "$LNX/firmware/*" -prune -o \
-path "$LNX/net/*" -prune -o \
-path "$LNX/samples/*" -prune -o \
-path "$LNX/scripts*" -prune -o \
-path "$LNX/security/*" -prune -o \
-path "$LNX/sound/*" -prune -o \
-path "$LNX/tools/*" -prune -o \
-path "$LNX/usr/*" -prune -o \
-path "$LNX/virt/*" -prune -o \
-name "*.[chxsS]" -print >/home/youself/cscope_ctag_db/cscope.files
$sudo chmod 775 youdefinename.sh把上面的脚本保存到一个youdefinename.sh文件中,修改youdefinename.sh文件权限并执行
注意:(1)上面脚本的第二行与最后一行需要适配为自己的路径,第二行为源码路径,最后一行是存放cscope数据库的目录。(2)上面脚本是针对2.6.39源码写的,如果你是其他的版本的内核源码,请适配
$./youdefinename.sh
$ls /home/youself/cscope_ctag_db
可以看到cscope.files。验证文件cscope.files是成功了的,执行命令
$cat cscope.files | head -n 50
看到有东西输出,都是内核源码文件的绝对路径。
在包含cscope.files路径下执行
$cd /home/youself/cscope_ctag_db
$cscope -b -q -k
会生成好几个文件,其中包括cscope.out。还差最后一步了,执行
$cd ~/.vim/plugin
$sudo gedit cscope_maps.vim
在该文件中找到如下几行,并修改成你自己的cscope.out的路径
if filereadable("/home/youself/cscope_ctag_db/cscope.out")
cs add /home/youself/cscope_ctag_db/cscope.out #add the database pointed to by environment variable
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
到此,ctag+cscope+taglist+Nerdtree打造sourceinsight功能已经完成。剩下的就是如何使用,如何操作了。
待更新