文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>配置lrx 和glimpse 阅读源代码的过程

配置lrx 和glimpse 阅读源代码的过程

时间:2006-12-21  来源:todaygood

今天配置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比较简单,就从它开始:

   首先访问站点: 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,你可以访问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 : http://yourIP/lxr/http/
注意此处 /  千万不能少, 如果少了,配置之后发现 很多链接目录因为隔了一层,导致访问失败。

       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  内容:

       <Files ~ (source|search|ident|diff|find)$> ***

       SetHandler cgi-script

       </Files>

     上面这个文件保证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 ,
   加入

     <Directory /home/httpd/html/lxr/http>

      Options All

      AllowOverride All

      order allow,deny

      allow from all

     </Directory>

  注意如果没有 access.conf 这个文件,直接将上面的内容加在 /etc/httpd/conf/httpd.conf 里面。

   8)进入/etc/rc.d/init.d/  执行

     killall httpd

     ./httpd start

     进入X ,用浏览器 http://yourIP/lxr/http/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 : http://yourIP/lxr/http/   最后面的“/”号, 导致很多链接出现问题,发现隔了一层目录。

看了一下, lxr 文档,尽管是英文的,
参考文档:

1)lxr 自带文档
2)http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=linuxK&Number=262715

安装用于内核与源码的交叉索引工具lxr-0.3

1.wget
href="http://prdownloads.sourceforge.net/lxr/lxr-0.3.tar.gz,目前最新版为0.91,0.3为其
稳定版"
target="_blank">http://prdownloads.sourceforge.net/lxr/lxr-0.3.tar.gz,目前最新版为0.9
1,0.3为其稳定版


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 ,加入

<Directory /var/www/lxr/http>

Options All

AllowOverride All

order allow,deny

allow from all

</Directory>

6.编辑/var/www/lxr/http/lxr.conf文件

更改如下:

variable: v, Version, [/var/www/lxr/source/versions]

baseurl:http://192.168.0.1/

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
target="_blank">http://www.kernel.org/pub/linux/kernel/v2.2/linux-2.2.20.tar.gz;
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;编辑以下内容

<Files ~ (search|source|ident|diff|find)$>

SetHandler cgi-script

</Files>

10.修改blurb.html中的超连接如下

<a HREF="/source/">

<i>Browse the code</i></a>

修改template-tail与template-head文件修改blurb.html的超连接为<a
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

看一下这里:
http://http://lxr.linux.no/ 效果太好了,还可以对比版本。
发现里面对安装过程说得很详细, 看来如果出了问题,首先不是去google, 一定要先看看英文文档,
往往答案就在其中。




相关阅读 更多 +
排行榜 更多 +
中顺捕鱼大冒险微信版官方免费下载

中顺捕鱼大冒险微信版官方免费下载

休闲益智 下载
栖云异梦官方安卓版下载

栖云异梦官方安卓版下载

冒险解谜 下载
像素火影次世代2025最新版下载

像素火影次世代2025最新版下载

飞行射击 下载