借他人的文章先描述:http://hi.baidu.com/bellgrade/blog/item/e69d012f9438f9584fc22632.html
cscope的图形前端kscope
官方网站下载 http://kscope.sourceforge.net/dload.shtml
#tar xzvf kscope-1.6.0.tar.gz
#cd kscope-1.6.0
#./configure
#make
#make install
很简单,基本上不需要任何额外的配置。当然了,在安装Linux系统时要保证安装了KDE和Qt开发包。
然后就可以启动Kscope了。第一次启动时,你需要对Kscope做一些简单的配置,在配置时可能要你指定Kscope所需的cscope,ctags和dot,直接点击下面的按钮Guess,让它自己检测就可以了。如果发现有什么没有找到,可能就是你的系统里没有安装所需的软件包,手动安装即可。这里我的系统没有找到dot,所以还不能使用kscope的图表功能。
所谓dot,是指Graphviz,它是一个图表程序,所以要使用Kscope的图表功能,需要graphviz的支持。从http://www.graphviz.org/下载最新的源代码graphviz-2.14.tar.gz,和上面kscope一样解压安装就可以了。
2、建立一个新的项目。
点击project->new project.
Details:Name填上你想为你的工程取的一个名字,path为储存工程属性、数据库的目录。
File Types:选上你的工程可能含有的文件的后缀。内核代码一般默认的选择就行了。
Options:内核代码需要选上Kerel Project选项。如果是内核代码,将Refresh Database Automatically去掉(因为内核代码在我们阅读时,一般不发生改动,所以,数据库不需自动更新)。
点击create按钮。加入代码到你的工程中去。
3、阅读代码。
关于代码的跳转阅读的快捷键,在cscope菜单中有具体的介绍。我要说的是它的一个很酷的功能。
将光标停在某个函数名上,按Ctrl + /。根据提示,点两下鼠标,就可以轻松得到一附函数调用的关系图。下面是Linux内核中一个某些函数的调用关系的截图:
Kscope 设置外部编辑器(gvim)
settings -> configure Kscope -> options
external Editer : gvim +%L %F
另外一篇文章:
以前在windows下用source insight看源代码很方便,现在转到linux下,想着一款类似的软件,于是发现了Kscope。
ubuntu下的源里居然找不到kscope,从网上下了一个源码,1.9.4版本的。按照INSTALL里的说明开始编译。
make的时候,报错:“error: qsciscintilla.h: 没有那个文件或目录”,在/usr/下也没有搜索到这个头文件。在网上看到有位仁兄提到了解决办法,是把/usr/include/qt4/下的Qsci目录软链接到/usr/include下,不知道这个Qsci是何物。于是我在好立德里搜"qsci",找到两个相关的库,库的名字整好和头文件一样"libqscintilla2-dev","libqscintilla-dev"(又看了一遍,不完全一样,有一个"i"的差别)。软件包的description里写到“The Qt4 port of the Scintilla source code editing widget”,看来就是缺少这个东西,于是安装了一下。再把/usr/include/qt4/Qsci软链接到/usr/include/Qsci,编译,通过了。
再然后是安装,make install,通过。
最后在命令行执行"kscopeapp",提示找不到libkscope_core.so.1。这个库在安装的时候明明看到过。。。搜索了一下,在/usr/local/lib/有这个库。在/etc/ld.so.conf.d/下创建一个kscope.conf文件,写入“/usr/local/lib”,再执行ldconfig,使动态库搜索路径包含该目录。再次执行"kscopeapp",OK,可以启动了!
另外对于ubuntu10.10可以用如下脚本自动完成,从往上找到的,到这里分享
在网上查找kscope的安装,建议使用如下脚本:
#!/bin/bash
# This script helps you install Kscope on Ubuntu 9.04.
# You can also use it to fix "Kscope doesn't run in KDE4" bug.
echo "Determining machine hardware name... "
MACHINE=`uname -m`
case "$MACHINE" in
i386 | i586 | i686)
ARCH="i386"
;;
x86_64)
ARCH="amd64"
;;
*)
ARCH="i386"
;;
esac
# If Kscope is not installed, install it.
which kscope &> /dev/null
if [ $? -ne 0 ]; then
echo "Installing kscope..."
sudo apt-get install kscope || /
wget http://archive.ubuntu.com/ubuntu/pool/universe/k/kscope/kscope_1.6.0-1_${ARCH}.deb && /
sudo dpkg -i kscope_*.deb || /
sudo apt-get -fy install || /
echo "Oops, some error happens..."
fi
kscope -v &> /dev/null
if [ $? -eq 0 ]; then
echo "Kscope works fine."
exit
fi
echo "Downloading KDE3 libraries needed by kscope..."
wget http://ftp.debian.org/debian/pool/main/k/kdebase/kate_3.5.9.dfsg.1-6+lenny1_${ARCH}.deb
dpkg -x kate_3*.deb kate
echo "Installing KDE3 libraries..."
sudo cp kate/usr/lib/libkateinterfaces.so.0.0.0 /usr/local/lib/
sudo cp kate/usr/lib/libkateutils.so.0.0.0 /usr/local/lib
sudo ln -s /usr/local/lib/libkateinterfaces.so.0.0.0 /usr/local/lib/libkateinterfaces.so.0
sudo ln -s /usr/local/lib/libkateutils.so.0.0.0 /usr/local/lib/libkateutils.so.0
sudo ldconfig
echo "Finished."
可是在使用的时候出现如下错误提示:
Determining machine hardware name...
Downloading KDE3 libraries needed by kscope...
--2010-12-30 22:44:04-- http://ftp.debian.org/debian/pool/main/k/kdebase/kate_3.5.9.dfsg.1-6_amd64.deb
登陆http://ftp.debian.org/debian/pool/main/k/kdebase/目录下,发现/kate_3.5.9.dfsg.1-6_amd64.deb已经变为kate_3.5.9.dfsg.1-6+lenny1_${ARCH}.deb,将脚本重新修改一下文件名然后执行,就可以正常安装kscope使用了。
注意,如果安装出了问题可以:
sudo apt-get install -f
或者
sudo dpkg --configure -a