今天配置lrx 和glimpse 阅读源代码的过程
一开始找了一个中文文档看了一下:
lxr(linux cross reference)就是一个解决这个问题的工具:他对
你指定的源代码文件建立索引数据库,利用perl脚本CGI动态生成包含
源码的web页面,你可以用任何一种浏览器查阅。在此web页中,所有
的变量、常量、函数都以超连接的形式给出,十分方便查阅。比如你
在阅读/usr/src/linux/net/socket.c的源代码,发现函数
get_empty_inode不知道是如何以及在哪里定义的,这时候你只要点击
get_empty_inode,lxr将返回此函数的定义、实现以及各次引用是在什
么文件的哪一行,注意,这些信息也是超连接,点击将直接跳转到相应
的文件相应的行。另外lxr还提供标识符搜索、文件搜索,结合程序
glimpse还可以提供对所有的源码文件进行全文检索,甚至包括注释!
下面将结合实例介绍一下lxr和glimpse的基本安装和使用,由于
glimpse比较简单,就从它开始:
首先访问站点: 得到glimpse
的源码,比如我得到的是glimpse-4.12.5.tar.gz . 用root登录,在
任一目录下用tar zxvf glimpse-4.12.5.tar.gz解开压缩包,在当前
目录下出现新目录glimpse-4.12.5 .进入该目录,执行make即可。进
入bin目录,将文件glimpse和glimpseindex拷贝到/bin或/usr/bin下
即可。如果单独使用glimpse,那么只要简单的执行glimpseindex foo
即可,其中foo是你想要索引的目录,比如说是/usr/src/linux .glimpseindex
的执行结果是在你的起始目录下产生若干.glimpse*的索引文件。然后
你只要执行glimpse yourstring即可查找/usr/src/linux下所有包含
字符串yourstring的文件。
对于lxr,你可以访问lxr.linux.no得到它的源代码解包后,遵循如下步骤:
/*下面的文字来源于lxr的帮助文档以及本人的安装体会*/
1)修改Makefile中的变量PERLBIN和INSTALLPREFIX,使它们分别为
perl程序的位置和你想lxr安装的位置.在我的机器上,PERLBIN的值为
/usr/bin/perl .至于INSTALLPREFIX,有如下原则,lxr的安装路径
必须是web服务器能有权限访问。因此它的值简单一点可取
/home/httpd/html/lxr (对于Apache web server)。
这里web服务器默认访问的目录是/home/httpd/html/
2)执行 make install 这里假设lxr 安装在$INSTALLPREFIX =/home/httpd/html/
3)修改$INSTALLPREFIX/lxr/http/lxr.conf :
baseurl :
注意此处 / 千万不能少, 如果少了,配置之后发现 很多链接目录因为隔了一层,导致访问失败。 htmlhead:$INSTALLPREFIX/lxr/http/template-head
htmltail: $INSTALLPREFIX/lxr/http/template-tail
htmldir: $INSTALLPREFIX/lxr/http/template-dir
sourceroot : $INSTALLPREFIX/lxr/source/$v # 假如对linux核心代码索引
dbdir : /home/httpd/html/lxr/dbdir/$v/ #dbdirk可任意起名,且位置任意
glimpsebin: /usr/bin/glimpse #可执行程序glimpse的位置
4)在$INSTALLPREFIX/http/下增加一个文件.htaccess 内容:
***
SetHandler cgi-script
上面这个文件保证Apache server将几个perl文件作为cgi-script.
5)按照lxr.conf中的设置建立dbdir ,按照上例,建立目录
$INSTALLPREFIX/lxr/dbdir
进入这个目录执行$INSTALLPREFIX/bin/genxref yourdir
其中yourdir是源码目录,比如/usr/src/linux
如果要结合glimpse,则执行glimpseindex -H . yourdir
6)编辑lxr.conf文件中指定获得Version的文件面, variable: v, Version, [$INSTALLPREFIX/lxr/source/versions], [/local/lxr/source/defversion]
将源码目录放在lxr/下
如: mv ..../linux-2.4.18 $INSTALLPREFIX/lxr/source/2.4.18
mv /usr/src/linux-2.6.15 $INSTALLPREFIX/lxr/source/2.6.15
这种做软链接的方法不知在处理多个源目录时发生了问题,单个源目录没有问题(没有用到$v).
ln -s ..../linux-2.4.18 $INSTALLPREFIX/lxr/source/2.4.18
vi source/versions 如下:
2.4.18
2.6.15
7)修改 /etc/httpd/conf/access.conf ,
加入
Options All
AllowOverride All
order allow,deny
allow from all
注意如果没有 access.conf 这个文件,直接将上面的内容加在 /etc/httpd/conf/httpd.conf 里面。
8)进入/etc/rc.d/init.d/ 执行
killall httpd
./httpd start
进入X ,用浏览器 blurb.html
大功告成 ,这下你可以舒心的读源码了。
12.如何建立多个内核版本的源码交叉索引?
编辑lxr.conf文件中指定获得Version的文件/var/www/lxr/source/versions
按照7的步骤建立linux-2.0.39;linux-2.4.18两个版本的源码索引,然后
cat /var/www/lxr/source/versions;
2..2.20
2.0.39
2.4.18
由于没有写
baseurl : 最后面的“/”号, 导致很多链接出现问题,发现隔了一层目录。
看了一下, lxr 文档,尽管是英文的,
参考文档:
1)lxr 自带文档
2)
安装用于内核与源码的交叉索引工具lxr-0.3
1.wget
2. tar zxvf lxr-0.3.tar.gz后 cd lxr-0.3/;make;
3. vi Makefile
修改INSTALLPREFIX=/var/www/lxr(通过浏览器访问的目录)
4. make install将lxr的相关文件复制到$INSTALLPREFIX指定的目录下
5. 安装apache,建立用户及用户组apache,然后更改配置文件httpd.conf
或其它(与apache版本有关)
User = apache
Group = apache
DocumentRoot=/var/www/lxr/http
在DirectoryIndex 中加入blurb.html,类似于DirectoryIndex index.html index.htm
blurb.html
编辑 /etc/httpd/conf/access.conf ,加入
Options All
AllowOverride All
order allow,deny
allow from all
6.编辑/var/www/lxr/http/lxr.conf文件
更改如下:
variable: v, Version, [/var/www/lxr/source/versions]
baseurl:
sourceroot: /var/www/lxr/source/$v/
srcrootname: Linux
incprefix:/var/www/lxr/source/$v/include/linux/ 需要包含的头文件所在目录
dbdir:/var/www/lxr/dbindex/$v/ 存放交叉索引数据库的目录
map: /var/www/lxr/source/$v/include/asm[^\/]*/ /var/www/lxr/source/$v/include/asm-$a/
map: /var/www/lxr/source/$v/arch/[^\/]+/ /var/www/lxr/source/$v/arch/$a/
7.mkdir -p /var/www/lxr/dbindex/;chown -R apache.apache /var/www/lxr/dbindex/
8.为linux-2.2.20内核建立lxr交叉索引
wget
cd /var/www/lxr/source/;
tar zxvf linux-2.2.20.tar.gz;
mv linux 2.2.20;
cd 2.2.20;
../../bin/genxref (建议安装perl-5.0)
chow -R .apache.apache ../source/
mv fileidx ../../dbindex/2.2.20/
mv xref ../../dbindex/2.2.20/
9. cd http/; vi .htaccess;编辑以下内容
SetHandler cgi-script
10.修改blurb.html中的超连接如下
Browse the code
修改template-tail与template-head文件修改blurb.html的超连接为href="/blurb.html">
11.打开mozilla浏览 192.168.0.1
12.如何建立多个内核版本的源码交叉索引?
编辑lxr.conf文件中指定获得Version的文件/var/www/lxr/source/versions
按照7的步骤建立linux-2.0.39;linux-2.4.18两个版本的源码索引,然后
cat /var/www/lxr/source/versions;
2..2.20
2.0.39
2.4.18
看一下这里:
效果太好了,还可以对比版本。
发现里面对安装过程说得很详细, 看来如果出了问题,首先不是去google, 一定要先看看英文文档,
往往答案就在其中。
阅读(1561) | 评论(0) | 转发(0) |