`
isiqi
  • 浏览: 16558906 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

阅读更多
我们在阅读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-0.9.5.zip_lxr_lxr-0.9.5

    总之,"lxr-0.9.5.zip"提供的lxr工具是Linux开发者和研究者的得力助手,它通过智能化的代码导航,使得深邃的开源世界变得触手可及。无论你是新手还是老手,掌握并善用lxr,都能提高你的代码阅读和分析效率,深化对...

    lxr-0.9.10.gz_lxr_lxr source download

    为了更好地理解和分析这个庞大的代码库,开发者们开发了各种工具,其中“LXR”(Linux eXtended References)是一款功能强大的源码浏览器。本文将详细介绍LXR的特性及其在0.9.10版本中的应用,以及如何下载和使用LXR...

    LXR+mysql+glimpse+apache源码浏览平台搭建心得(一)

    本文将详细介绍如何使用LXR、MySQL、Glimpse和Apache搭建这样一个系统,主要针对Linux环境,但原理也适用于其他类Unix系统。 首先,LXR(Linux Cross-Reference)是一款强大的开源源码索引工具,它能为大型代码库...

    lxr-0.9.6.tgz

    Linux下的源代码阅读工具LXR(Link Cross-Reference)是一个非常实用的开源软件,主要用于帮助开发者在庞大的Linux内核源代码或者其他大型C/C++项目中快速查找和导航代码。LXR 0.9.6版是该工具的一个稳定版本,提供...

    Linux-2.4.20内核源代码

    4. LXR(Linux Cross Reference):在线工具,便于查找和理解内核源码。 通过研究这个版本的内核,开发者不仅可以了解Linux内核的基本架构,还可以学习到如何阅读和分析复杂的开源项目,这对于成为一名出色的Linux...

    lxr-0.3.tar.gz_lxr_lxr tar

    lxr-0.3.tar.gz是一个压缩文件,其中包含了lxr工具的全部源代码。使用tar命令可以将这个压缩包解压,然后通过编译步骤来构建可执行程序。解压过程通常包括以下步骤: 1. 首先,使用`tar -zxvf lxr-0.3.tar.gz`命令...

    LXR+mysql+glimpse+apache源码浏览平台搭建心得(二)lxr.conf

    LXR+mysql+glimpse+apache源码浏览平台搭建心得(二)lxr.conf

    电子版(下册).-嵌入式Linux开发教程 周立功

    文档提到了SourceInsight、Eclipse、vim+ctags+cscope、LXR等工具,这些工具能够帮助开发者更好地理解Linux内核的源代码结构和流程。 2. Linux内核源码结构: - Linux内核源码具有清晰的目录树结构,方便开发人员...

    qca7000-linux-mainline.zip

    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 ).

    glimpse 最新版本

    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 ...

    Linux内核阅读

    - **压缩内核映像**:编译完成后,内核会被压缩成`bzImage`文件,这是一个特殊的可执行文件,包含了内核的所有代码和数据。 - **加载位置**:`bzImage`通常放置在系统的`/boot/`目录下,并通过引导加载程序(如GRUB...

    嵌入式Linux开发教程(下册)-周立功著

    这部分内容虽然没有在提供的摘录中体现,但可以合理推断,书中也会涵盖Linux内核调试的技巧和工具使用,如kgdb、kmemcheck等,这些都是嵌入式Linux开发中不可或缺的技能。 综上所述,周立功先生的《嵌入式Linux开发...

    Linux Kernel Debugging_Muli Ben-Yehuda

    - **lxr (Linux Cross Reference)**:在线浏览源码的工具,可以快速查找函数定义及调用关系。 - **find 和 grep**:用于搜索文件和字符串的强大命令行工具。 - **ctags, etags, gtags**:用于标记源码中的符号,方便...

    kernel_labs(关于内核代码分析)

    - 学习资源:如LXR(Linux Cross Reference)在线查看源码,LKML(Linux Kernel Mailing List)获取最新讨论和技术信息。 - 实验环境:建立虚拟机或使用QEMU等模拟器进行实验,避免对生产环境造成影响。 - 实验...

    hsa-miR-206负调控核受体LXRα mRNA的表达水平 (2013年)

    本研究发现,hsa-miR-206通过与LXRα 3′ UTR直接相互作用,以抑制细胞中LXRα的mRNA水平,下调LXRα的转录活性,并最终使LXRα配体GW3965对 LXR的目的基因SCD-1的诱导作用受到抑制.这些结果表明,hsa-miR-206能够...

    Linux,快速,学习

    - lxr、glimpse和global可以帮助开发者查看和搜索代码库。 7. **版本控制工具CVS**: - CVS用于并行和远程开发,通过记录代码历史,支持版本回溯和合并。 8. **库函数和系统调用**: - 系统调用是操作系统提供...

    linux3.2.0源码树

    对于初学者,推荐从官方文档、《Linux 内核编程》等书籍以及 LXR (Linux Cross Reference) 等在线工具开始,它们提供了对源码的导航和解释。 总之,Linux 3.2.0 源码树是学习操作系统内核、硬件驱动以及系统级编程...

    c2html_mac:mac版本的linux源代码转换网页的代码。对应antriver.com,包括函数交叉索引文件生成

    c2html_mac mac版本的linux源代码转换网页的代码。对应antriver.com,包括函数交叉索引文件生成本软件由icecut(姜亦春) 开源。随便使用。不保留版权。 2014年,为了让大家能讨论好linux学习,制作了一个网站,来...

    linux内存管理总结

    - Linux Cross Reference (LXR):这是一个基于Web的Linux内核源代码浏览器,允许用户方便地搜索和查看内核源码。 2. **内存管理模块**: - Out of Memory (OOM):当系统内存不足时,Linux会执行OOM killer来释放...

Global site tag (gtag.js) - Google Analytics