Chinaunix首页 | 论坛 | 博客
  • 博客访问: 443540
  • 博文数量: 52
  • 博客积分: 3193
  • 博客等级: 中校
  • 技术积分: 860
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-19 09:58
文章分类

全部博文(52)

文章存档

2012年(1)

2011年(9)

2009年(18)

2008年(24)

我的朋友

分类: LINUX

2008-05-22 11:27:01

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) |
给主人留下些什么吧!~~