lxr: Linux Cross-Reference
0.31 (stable) for Debian
最近看源码,找到这个工具,不知道对大家是否有用。
本文与README.Debian稍有出入
安装perl
安装Web服务器(apache2)
安装glimpse(可选)
(glimpse 下载:ttp://webglimpse.net/download.php,安装时如果出现找不到flex错误时: flex安装:apt-get install flex)。
安装目录为
/var/lib/lxr
1) 建立目录
- 源码目录
以2.6.15版本为例
假设源码放在/usr/src/linux-2.6.15中,可以用
# cd /var/lib/lxr/source/
# ln /usr/src/linux-2.6.15 -s linux-2.6.15
当然也可以直接将源码放到此目录中。建立其它版本的源码目录,例
source
|-- linux-0.11
|-- linux-1.0
|-- linux-2.2.25
|-- linux-2.4.27
`-- linux-2.6.15
创建文件versions,写入版本的列表
代码:
linux-0.11 linux-1.0 linux-2.2.25 linux-2.4.27 linux-2.6.15
创建文件defversion,写入显示的默认版本
linux-2.6.15
- 索引目录
建立这个目录是为了方便管理文件
# mkdir /var/lib/lxr/databases
# cd /var/lib/lxr/databases
# mkdir linux-0.11
...
2) 配置Web服务器
以apache2为例
创建文件 /etc/apache2/site-available/lxr 写入:
PHP 代码:
# Linux Cross Reference Stuff
# 以 建立访问
# 允许/var/lib/lxr能被用户访问
Alias /lxr /var/lib/lxr
Options All
AllowOverride All
# ln /etc/apache2/site-available/lxr -s /etc/apache2/site-enable/lxr
创建文件 /var/lib/lxr/http/.htaccess 写入:
PHP 代码:
SetHandler cgi-script
3) 配置LXR
修改配置文件 /var/lib/lxr/http/lxr.conf:
PHP 代码:
# Configuration file.
# Define typed variable "v", read valueset from file.
# 版本列表的位置
variable: v, Version, [/var/lib/lxr/source/versions], [/var/lib/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:
# These are the templates for the HTML heading, directory listing and
# footer, respectively.
# 显示网页的格式
htmlhead: /var/lib/lxr/http/template-head
htmltail: /var/lib/lxr/http/template-tail
htmldir: /var/lib/lxr/http/template-dir
# The source is here.
# 源码目录位置
sourceroot: /var/lib/lxr/source/$v/
# 显示源码的名称
srcrootname: $v
# "#include " is mapped to this directory (in the LXR source
# tree)
incprefix: /include
# The database files go here.
# 放置lxr数据库索引文件的目录
dbdir: /var/lib/lxr/databases/$v/
# Glimpse can be found here.
# glimpse安装位置
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/
4) 生成数据文件
# cd /var/lib/lxr/source
生成lxr的数据库文件
# /var/lib/lxr/bin/genxref linux-2.6.15
# mv fileidx ../databases/linux-2.6.15/
# mv xref ../databases/linux-2.6.15/
生成glimpse数据库(参考glimpse --help生成其它数据)
# glimpseindex -H . linux-2.6.15
# mv .g* ../databases/linux-2.6.15
允许数据文件可访问
# chmod +r ../databases/linux-2.6.15/*
# chmod +r ../databases/linux-2.6.15/.g*
5) 使用
重启Web服务器,访问
*** 如果出现错误
- 确保Web访问权限正确;
- 能执行Perl脚本;
- 查看error.log。
如果用diff markup出错,对diff打补丁
// diff.path
PHP 代码:
--- diff.old 1998-05-14 20:01:45.000000000 +0800
+++ diff 2006-03-13 22:00:39.000000000 +0800
@@ -130,7 +130,7 @@
}
}
- close();
+ close(DIFF);
print("Diff markup
\n",
阅读(3650) | 评论(0) | 转发(0) |