分享
 
 
 

阅读linux源代码的工具---lxr和glimpse简介

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

我们在阅读linux源代码时都有这样的体会:核心的组织相对松散,在看一个文件时往往要牵涉到其他的头文件、源代码文件。如此来回跳转寻找变量、常量、函数的定义十分不方便,这样折腾几次,便使读代码的心情降到了低点。

lxr(linux cross reference)就是一个解决这个问题的工具:他对指定的源代码文件建立索引数据库,利用perl脚本CGI动态生成包含码的web页面,你可以用任何一种浏览器查阅。在此web页中,所有变量、常量、函数都以超连接的形式给出,十分方便查阅。比如你阅读/usr/src/linux/net/socket.c的源代码,发现函数 get_empty_inode不知道是如何以及在哪里定义的,这时候你只要点击 get_empty_inode,lxr将返回此函数的定义、实现以及各次引用是在什么文件的哪一行,注意,这些信息也是超连接,点击将直接跳转到相应的文件相应的行。另外lxr还提供标识符搜索、文件搜索,结合程序 glimpse还可以提供对所有的[url=http://www.pccode.net].net" class="wordstyle"源码文件进行全文检索,甚至包括注释!

下面将结合实例介绍一下lxr和glimpse的基本安装和使用,由于glimpse比较简单,就从它开始:

首先访问站点: http://glimpse.cs.arizona.edu/ 得到glimpse的[url=http://www.pccode.net].net" class="wordstyle"源码,比如我得到的是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是[url=http://www.pccode.net].net" class="wordstyle"源码目录,比如/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大功告成 ,这下你可以舒心的读[url=http://www.pccode.net].net" class="wordstyle"源码了。

注意:以上只是lxr和glimpse的基本用法,进一步的说明可以参考连机文档。如有问题请与 sea_cloud@263.net 联系。

***文中的“《”“》”,实际为“<”“>”,sorry,不这么写就不显示了:(

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有