我们在阅读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,你可以访问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的基本用法,进一步的说明可以参考连机文档。
分享到:
相关推荐
lxr 是linux 浏览网上开源代码,如linux内核等等,的好工具
kernel source code browser : lxr
LXR+mysql+glimpse+apache源码浏览平台搭建心得(一)
LXR+mysql+glimpse+apache源码浏览平台搭建心得(二)lxr.conf
Linux下的源代码阅读工具0.9.6版
Webglimpse requires Glimpse. Separate use of Glimpse requires a license. If you are installing Webglimpse via ssh, you will need to install Glimpse first. (The FTP and cPanel installers automatically ...
项目源码察看工具lxr-0.3.tar.gz
我看内核源代码是用lxr+glimpse(不一定要自己架,可以直接访问校内外的lxr网 站)的。如果在windows下也可以用source insight。以下的当前路径为内核源代码路径, 通常为/usr/src/linux。内核版本为2.6.13,平台为...
本研究发现,hsa-miR-206通过与LXRα 3′ UTR直接相互作用,以抑制细胞中LXRα的mRNA水平,下调LXRα的转录活性,并最终使LXRα配体GW3965对 LXR的目的基因SCD-1的诱导作用受到抑制.这些结果表明,hsa-miR-206能够...
SPI protocol driver for Qualcomm Atheros QCA7000 serial-to-... This driver has been merged in the mainline kernel since Linux 3.18 ( http://lxr.free-electrons.com/source/drivers/net/ethernet/qualcomm ).
c2html_mac mac版本的linux源代码转换网页的代码。对应antriver.com,包括函数交叉索引文件生成本软件由icecut(姜亦春) 开源。随便使用。不保留版权。 2014年,为了让大家能讨论好linux学习,制作了一个网站,来...
尚未探索通过抑制脂类代谢来抑制动脉粥样硬化,而其他通过炎症,内皮功能障碍和自由基来抑制动脉粥样硬化的研究也已进行。 通过抑制脂质代谢来抑制动脉粥样硬化可以通过反向胆固醇转运(RCT)的机制来完成。 在该...
java版商城源码下载 SpringBoot-SecondKill 介绍 基于SpringBoot+Mybatis+...Redis_Windows的简化安装版(Redis-x64-3.2.100)--当然,如果自己有Linux服务器,也可以连接Linux的 ZooKeeper_Windows的简化安装版(Zook
最新版本的Linux内核源代码,可以通过LXR插件对源代码进行查看学习。
通用源代码索引器和交叉引用器,可提供基于Web的源代码浏览以及指向任何标识符的定义和用法的链接。 支持多种语言。 http://lxr.sourceforge.net中的最新信息
方法:我们研究了LXR激动剂(GW3965)或PPARγ(吡格列酮)和PPARδ(GW0742)激动剂在SLE动物模型,雌性MRL / MpJ-Fas / J小鼠和BALB / cAJcl小鼠经p烷治疗后的疗效。 使用单向方差分析和Tukey的真实显着差异检验...
linux内核调试分析指南 linux内核调试分析指南--上篇 本文档已经转到下面的网址,位于zh-kernel.org的文档停止更新,请访问新网址 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一...
The LXR Source-Code Browser 551 Section A.1. Functionality 551 Section A.2. Installation 555 Appendix B. Debugging in the Linux Kernel 557 Section B.1. Log Outputs From the Linux Kernel ...
##Oauth2是什么? 一种标准的用户认证授权...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
牛LXRα基因mRNA重组慢病毒载体的构建及其对牛肌肉卫星细胞的干扰效果,刘永峰,赵璐,肝X受体α(LXRα)基因是核激素受体家族的成员,它可以调节参与胆固醇代谢基因的转录。近期研究发现LXRα被认为是一个调节巨噬...