Linux 版 (精华区)

发信人: don (驿路梨花), 信区: Linux
标  题: 阅读linux源代码的工具---lxr和glimpse简介
发信站: 紫 丁 香 (Tue May  9 10:03:26 2000), 转信

发信人: null (钠尔), 信区: LINUX
标  题: 阅读linux源代码的工具---lxr和glimpse简介
发信站: 碧海青天 (Tue May  2 15:53:43 2000), 转信


阅读linux源代码的工具---lxr和glimpse简介
作者: sea_cloud[sea_cloud@263.net]
   我们在阅读linux源代码时都有这样的体会:核心的组织相对松散,
在看一个文件时往往要牵涉到其他的头文件、源代码文件。如此来回
跳转寻找变量、常量、函数的定义十分不方便,这样折腾几次,便使
读代码的心情降到了低点。
   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比较简单,就从它开始:
   首先访问站点: http://glimpse.cs.arizona.edu/ 得到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,你可以访问 http://lxr.linux.no/得到它的源代码。
解包后,遵循如下步骤:
 /*下面的文字来源于lxr的帮助文档以及本人的安装体会*/
   1)修改Makefile中的变量PERLBIN和INSTALLPREFIX,使它们分别为
perl程序的位置和你想lxr安装的位置.在我的机器上,PERLBIN的值为
/usr/bin/perl  .至于INSTALLPREFIX,有如下原则,lxr的安装路径
必须是web服务器能有权限访问。因此它的值简单一点可取
/home/httpd/html/lxr (对于Apache web server)。
   2)执行 make install
   3)修改$INSTALLPREFIX/http/lxr.conf :
       baseurl : http://yourIP/lxr/http/
       htmlhead: /home/httpd/html/lxr/http/template-head
       htmltail: /home/httpd/html/lxr/http/template-tail
       htmldir:  /home/httpd/html/lxr/http/template-dir
       sourceroot : /usr/src/linux    # 假如对linux核心代码索引
       dbdir : /home/httpd/html/lxr/dbdir/  #dbdirk可任意起名,且位置任意
       glimpsebin: /usr/bin/glimpse   #可执行程序glimpse的位置
   4)在$INSTALLPREFIX/http/下增加一个文件.htaccess  内容:
       《Files ~ (source|search|ident|diff|find)$》***
       SetHandler cgi-script
       《/Files》
     上面这个文件保证Apache server将几个perl文件作为cgi-script.
   5)按照lxr.conf中的设置建立dbdir ,按照上例,建立目录
      /home/httpd/html/lxr/dbdir
     进入这个目录执行$INSTALLPREFIX/bin/genxref yourdir
     其中yourdir是源码目录,比如/usr/src/linux
     如果要结合glimpse,则执行glimpseindex -H . yourdir
   6)修改 /etc/httpd/conf/access.conf ,加入
     《Directory /home/httpd/html/lxr/http》
      Options All
      AllowOverride All
      order allow,deny
      allow from all
     《/Directory》
   7)进入/etc/rc.d/init.d/  执行
     killall httpd
     ./httpd start
     进入X ,用浏览器 http://yourIP/lxr/http/blurb.html
     大功告成 ,这下你可以舒心的读源码了。
   注意:以上只是lxr和glimpse的基本用法,进一步的说明可以
         参考连机文档。如有问题请与 sea_cloud@263.net 联系。
***文中的“《”“》”,实际为“<”“>”,sorry,不这么写就不显示了:(
中国Linux论坛 版权所有
----------------------------------------------------------------------------
----
Copyright 1999,China Linux Forum

--

--
一条驿路,一种氛围。
一朵梨花,一种思考。
希望能在Linux这条驿路上与你同行!

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.239.63]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.161毫秒