LXR的主页上是这样介绍自己的
A general purpose source code indexer and cross-referencer that provides web-based browsing of source code with links to the definition and usage of any identifier. Supports multiple languages.
对于需要阅读源代码的人来说,是一个非常有帮助的工具,所谓工欲善其事,必先利其器。
从配置到成功花了我不少时间,主要是网上的配置方法写的太杂,很多已经过时了,对于现在的情况已经不再适用,所以还是决定自己写一篇东西出来,虽然我知道我写完了过一段时间也会过期,所以尽量写一些这样配置的原因,而不是单纯的步骤,授人以鱼,不如授人以渔。
网上有很多配置好LXR的网站,最有名的当然是http://lxr.linux.no
但是网络上的东西毕竟有其不可靠性。首先是网速没有保证,点一次刷新半天。其次,我们虽然大多数时间能连上网,但总会遇到这样那样的连接问题,说不定某一天它就被GFW和谐掉了,这样的事情太多了,所以还是放在本机的服务器比较保险。
我们配置的环境是在ubuntu 7.04下,当然主要看中的是其安装软件apt的方便性,ubuntu毫无疑问是当今各个linux发行版中最有人气也最好用的一个。
配置步骤:
(1)安装lxr(版本为0.31,stable的版本),apache2,libapache2-mod-perl2,glimpse,perl
注:lxr 0.31版本是不需要有数据库支持的,所以MySQL和PostgreSQL是不需要的,而最新的0.9x的那些版本已经需要数据库支持了,我前面就是在数据库上花费了太多的时间,尤其是它不支持MySQL5,因为有release关键字的问题,非常ft。怎么安装我想ubuntu下大家都会,不用我多说了,apt一下或synaptic一下就可以了。
(2)lxr的安装目录为 /usr/share/lxr/,我们把需要索引的源代码放到/usr/share/lxr/source/下,目录名字为版本号,如2.6.17,然后新建文件/usr/share/lxr/source/versions,文件中写入2.6.17。创建文件/usr/share/lxr/source/defversion,意思为默认版本,我们写入2.6.17
注:我们可以放多个源代码目录在source目录下,名字可以任取,然后写入versions 即可。当然如果源码在其他路径下,也可以做一个软连接过来。
(3)建立索引目录,新建目录/usr/share/lxr/databases,然后在databases目录下创建目录2.6.17
(4)配置apache2,新建文件 /etc/apache2/sites-available/lxr,写入以下代码
Alias /lxr /usr/share/lxr
<Directory /usr/share/lxr>
Options All
AllowOverride All
</Directory>
注:这是让client访问apache2下http://localhost/linux时直接访问到/usr/share/lxr,以隐藏lxr的真实目录。
然后执行
guzhongshu@guzhongshu-laptop:~$sudo ln /etc/apache2/sites-available/lxr -s /etc/apache2/sites-enabled/lxr
创建文件/usr/share/lxr/http/.htaccess ,写入以下代码:
SetHandler cgi-script
注:这是为了让perl起作用,让apache2的mod_perl来执行http目录下的perl文件,而不是下载这个文件。
(5)配置LXR,主要修改的文件是/usr/share/lxr/http/lxr.conf,我的配置文件如下所示:
# Configuration file.
# Define typed variable "v", read valueset from file.
variable: v, Version, [/usr/share/lxr/source/versions], [/usr/share/lxr/source/defversion]
# Define typed variable "a". First value is default.
variable: a, Architecture, (i386, alpha, m68k, mips, ppc, sparc, sparc64)
# Define the base url for the LXR files.
baseurl:http://localhost/lxr/http/
# These are the templates for the HTML heading, directory listing and # footer, respectively.
htmlhead: /usr/share/lxr/http/template-head
htmltail: /usr/share/lxr/http/template-tail
htmldir: /usr/share/lxr/http/template-dir
# The source is here.
sourceroot: /usr/share/lxr/source/$v/
srcrootname: Linux
# "#include " is mapped to this directory (in the LXR source # tree)
incprefix: /include
# The database files go here.
dbdir: /usr/share/lxr/databases/$v/
# Glimpse can be found here.
glimpsebin: /usr/bin/glimpse
# The power of regexps. This is pretty Linux-specific, but quite
# useful. Tinker with it and see what it does. (How's that for
# documentation?)
map: /include/asm[^\/]*/ /include/asm-$a/
map: /arch/[^\/]+/ /arch/$a/
注:大家应该根据自己的系统环境来进行配置lxr.conf
(6) 生成数据文件
guzhongshu@guzhongshu-laptop:~$ cd /usr/share/lxr/source/
guzhongshu@guzhongshu-laptop:/usr/share/lxr/source$ sudo genxref 2.6.17/
长时间等待,因为要扫描文本处理
guzhongshu@guzhongshu-laptop:/usr/share/lxr/source$ sudo mv fileidx ../databases/2.6.17/
guzhongshu@guzhongshu-laptop:/usr/share/lxr/source$ sudo mv xref ../databases/2.6.17/
生成glimpse索引文件
guzhongshu@guzhongshu-laptop:/usr/share/lxr/source$ sudo glimpseindex -H . 2.6.17
guzhongshu@guzhongshu-laptop:/usr/share/lxr/source$ sudo mv .g* ../databases/2.6.17
允许数据文件可访问
guzhongshu@guzhongshu-laptop:/usr/share/lxr/source$ sudo chmod +r ../databases/2.6.17/*
guzhongshu@guzhongshu-laptop:/usr/share/lxr/source$ sudo chmod +r ../databases/2.6.17/.g*
(7)重启apache2
guzhongshu@guzhongshu-laptop:/usr/share/lxr/source$ /etc/init.d/apache2 restart
访问网站http://localhost/lxr/blurb.html
分享到:
相关推荐
首先,LXR(Linux Cross-Reference)是一款强大的开源源码索引工具,它能为大型代码库生成可供搜索的索引,便于快速查找函数、变量、宏定义等。安装LXR需要先获取源码,并遵循以下步骤: 1. 安装依赖:在大多数...
Linux下的源代码阅读工具LXR(Link Cross-Reference)是一个非常实用的开源软件,主要用于帮助开发者在庞大的Linux内核源代码或者其他大型C/C++项目中快速查找和导航代码。LXR 0.9.6版是该工具的一个稳定版本,提供...
lxr全称为“Link Cross Reference”,它是一个源代码浏览器,能够帮助开发者在复杂的代码库中快速定位和理解代码之间的关系。这个压缩包中的"lxr-0.9.5"包含了完整的lxr程序,可以部署在本地或者服务器上,方便...
9. **源码阅读方法**:阅读内核源码时,建议从关键函数入手,逐步跟踪调用链,同时结合相关的技术文档和在线资源,如LXR(Linux Cross Reference)和Kernel Newbies。 10. **实践应用**:理论结合实践是学习任何...
LXR+mysql+glimpse+apache源码浏览平台搭建心得(二)lxr.conf
lxr,全称Linux Cross Referencer,是一款强大的开源源代码浏览工具。它能够帮助开发者高效地在大型项目源码中查找、导航和理解代码结构。这个工具的最新版本为lxr-0.3,以tar.gz的压缩格式提供,方便用户下载和安装...
4. **配置与运行**:根据自己的需求配置LXR,例如指定要索引的源码路径。然后,运行LXR服务,它将在后台持续运行并提供浏览服务。 5. **使用**:启动LXR后,可以通过Web浏览器访问预设的URL来开始浏览内核源码。 ...
对于初学者,推荐从官方文档、《Linux 内核编程》等书籍以及 LXR (Linux Cross Reference) 等在线工具开始,它们提供了对源码的导航和解释。 总之,Linux 3.2.0 源码树是学习操作系统内核、硬件驱动以及系统级编程...
此外,Linux内核官方文档、LXR(Linux Cross Reference)以及各种在线社区都是学习Linux内核的宝贵资源。 总的来说,理解Linux内核设计的艺术不仅是对技术的深度追求,也是提升系统级编程能力的关键。通过学习和...
4. LXR(Linux Cross Reference):在线工具,便于查找和理解内核源码。 通过研究这个版本的内核,开发者不仅可以了解Linux内核的基本架构,还可以学习到如何阅读和分析复杂的开源项目,这对于成为一名出色的Linux...
- **lxr (Linux Cross Reference)**:在线浏览源码的工具,可以快速查找函数定义及调用关系。 - **find 和 grep**:用于搜索文件和字符串的强大命令行工具。 - **ctags, etags, gtags**:用于标记源码中的符号,方便...
通用源代码索引器和交叉引用器,可提供基于Web的源代码浏览以及指向任何标识符的定义和用法的链接。 支持多种语言。 http://lxr.sourceforge.net中的最新信息
- Linux Cross Reference (LXR):这是一个基于Web的Linux内核源代码浏览器,允许用户方便地搜索和查看内核源码。 2. **内存管理模块**: - Out of Memory (OOM):当系统内存不足时,Linux会执行OOM killer来释放...
文档提到了SourceInsight、Eclipse、vim+ctags+cscope、LXR等工具,这些工具能够帮助开发者更好地理解Linux内核的源代码结构和流程。 2. Linux内核源码结构: - Linux内核源码具有清晰的目录树结构,方便开发人员...
方法:我们研究了LXR激动剂(GW3965)或PPARγ(吡格列酮)和PPARδ(GW0742)激动剂在SLE动物模型,雌性MRL / MpJ-Fas / J小鼠和BALB / cAJcl小鼠经p烷治疗后的疗效。 使用单向方差分析和Tukey的真实显着差异检验...
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 ).
另一个工具是Linux Cross Reference (LXR),这是一个在线查看和搜索Linux内核源代码的平台,尽管安装过程复杂,直接在官网上查阅也是不错的选择。 Linux内存管理代码主要分为四个部分: 1. Out of memory (OOM) ...
常用的Linux源码阅读工具有SourceInsight、Eclipse、vim+ctags+cscope以及LXR等。SourceInsight是一个Windows平台上的源码阅读工具,可以方便地查看、修改和注释代码;Eclipse是一个通用的集成开发环境,通过插件...
综上所述,周立功先生的《嵌入式Linux开发教程(下册)》不仅是一本理论与实践相结合的教程,而且涵盖了从内核裁剪到定制、内核源码的阅读、内核配置、编译和调试等全方位的知识点,非常适合嵌入式Linux开发领域的技术...
- 学习资源:如LXR(Linux Cross Reference)在线查看源码,LKML(Linux Kernel Mailing List)获取最新讨论和技术信息。 - 实验环境:建立虚拟机或使用QEMU等模拟器进行实验,避免对生产环境造成影响。 - 实验...