由于平时需要阅读Android code, 我发现像androidxref.com这样的网站提供了非常方便的代码搜索功能,在源代码文件之间提供了高效的相互索引。
利用空余时间,我研究了一下如何搭建这样的系统,以便将来自己可以搭建其他代码的搜索引擎。根据网上找到的资料,基本上是有LXR和OpenGrok两种引擎。我按照找到的资料自己动手搭建了一下,遇到了一些问题并逐一解决,在此和大家分享一下,大部分的内容也是借鉴了其他博客的经验。
一. LXR
LXR是"the Linux Cross Reference"的缩写。LXR的opensource project 的位置在 http://sourceforge.net/projects/lxr/
LXR是用perl编写的,提供了以下功能,
1. 支持多种语言,包括 C, C++, Java, Python, Ruby, Perl, COBOL。
2. 迅速查找标识符的定义和使用位置。
3. 快速查找代码。
4. 支持大量代码
5. 支持多版本,并在多个版本之间进行比较。
LXR在Ubuntu环境下,是通过Apache服务器来访问的,其基本步骤是,
1. 通过LXR的配置步骤产生Apache服务器配置文件apache-lxrserver.conf,这个文件指向了LXR工作目录。
2. 通过genxref在LXR工作目录下建立索引数据库,基于mysql。
3. 当使用http://<IP>/source访问时,source是一个perl文件,它会访问索引数据库来建立代码访问页面。(这里我还没有仔细研究source这个perl文件)
安装步骤:
1. 安装apache
sudo apt-get install apache2
sudo apt-get install libapache2-mod-perl2 libapache2-mod-apreq2
如果没有执行第二个安装命令,后面启动Apache是会出现错误,Invalid command 'PerlTaintCheck'
2. 安装perl
sudo apt-get install perl
我的perl版本是v5.18.2