`
Beaver's
  • 浏览: 394601 次
  • 性别: Icon_minigender_2
  • 来自: 天津
社区版块
存档分类
最新评论

LXR 索引Android 源码

    博客分类:
  • lxr
 
阅读更多
最近在学习android 源码,为了便于查看和搜索代码,利用LXR 建立了android 源码索引环境,非常方便。
LXR 本身是建立对linux 源码进行索引的,本身对C 语言的代码索引有很好的支持,在LXR 最新版本(我用的是lxr-0.9.10)已经支持对java 代码进行索引,因此,可以很好的实现对android代码进行索引。

在Ubuntu 10.10 搭建LXR 环境步骤:

1.安装 apache2, MySQL and exuberant-ctags.

sudo apt-get install apache2 mysql-server exuberant-ctags


2.在安装mysql-server时,你需要为root 用户创建一个密码才可完成安装, 接着,安装a perl library, 确保你可以连接数据库。安装和perl 相关的库:

sudo apt-get install libdbi-perl libdbd-mysql-perl libfile-mmagic-perl libapache2-mod-perl2


3.下载lxr
http://sourceforge.net/projects/lxr/
在lxr 官网下载lxr,我下载的是lxr-0.9.10.tgz,默认下载到本地DOwnloads 文件夹下.

4. 配置lxr
解压缩lxr-0.9.10.tgz 到 /usr/local/share . 改名为lxr,执行以下命令即可:

cd /usr/local/share
sudo mv /home/beaver/Downloads/lxr-0.9.10.tgz .
sudo tar -zxf lxr-0.9.10.tgz
sudo mv lxr-0.9.10 lxr
cd lxr


5.配置数据库

首先登录数据库,使用直接创建的root 用户和密码

mysql -u root -p #Enter the password when asked.


初始化MySQL server, 运行如下命令建立索引数据系统:

CREATE USER 'lxr'@'localhost' identified by 'foo'; #Creates the user "lxr" with the password "foo"
\. initdb-mysql #Initializes the lxr database by creating the tables and give "lxr" user the needed permissions.


注意:为了确保初始化过程正确,需要在你的lxr目录下,即/usr/local/share/lxr 运行以上命令. 否则,在初始化数据库的时候无法找到initdb-mysql脚本。

退出数据库
exit


6.配置LXR.
此时,我们还在lxr 目录下. 首先,我们需要拷贝默认的 lxr.conf 文件到lxr 根目录.

sudo cp templates/lxr.conf .


接着,配置lxr,用编辑器打开lxr.conf

sudo vim lxr.conf


我使用的是开源搜索引擎swish-e取代glimpse,因为swish-e是完全开源的,而glimpse是商业的,下载安装swish-e:

sudo apt-get install swish-e


在lxr.conf 配置文件中注释掉glimpse相关的行,如下所示:

#, 'glimpsebin'   =>'/usr/local/bin/glimpse'
#, 'glimpseindex'   => '/usr/local/bin/glimpseindex'


现在给出swish-e 的执行路径,可以通过使用 “which swish-e” 命令找到。我系统的swish-e执行路径是:

, 'swishbin'   => '/usr/bin/swish-e'

注意:要确保用户对该文件有执行权限,如果遇到问题,可以通过“chmod”使用户有执行权限,下一步配置lxr的 ctags and configuration:

, 'ectagsconf' => '/usr/local/share/lxr/lib/LXR/Lang/ectags.conf'
, 'genericconf' => '/usr/local/share/lxr/lib/LXR/Lang/generic.conf'


现在定义 server’s URL.首先给出 base URL,如下:

,'baseurl' => '
http://localhost/lxr'


接着你可以添加主机的IP addresses,这样通过网络也可以访问LXR, addresses to URL aliases like the following:

, 'baseurl_aliases' =>
                        [ 'http://17.2.0.193/lxr']


接着我们指出源码所在的文件夹(下载android 源码),确保通过索引可以找到源码。android 源码可有多个版本,因此可将其放在一个主文件夹下,该文件夹可包含多个子目录,如android2.3.4,android 2.3.5 ,即每个版本要分别对应一个子目录。例如,我用一个文件夹lxr_source,作为源文件目录,如下所示:

, 'sourceroot' => '/home/beaver/lxr_source'


在lxr_source文件夹下,我有两个子目录 v1 and v2.我的源码分别在这两个子目录下,我需要告诉LXR 这些源码并且对他们进行索引. 通过在lxr.conf 文件如下行进行配置 :

, 'range' => [qw(v1 v2)]


接着设置默认版本是 version 2:

, 'default' => 'v2'


接着配置数据库连接。删除 “#” 字符并且设置用户名和密码是你之前创建的用户和密码:

,'dbpass' =>'foo'
, 'dbuser' => 'lxr
'

最后设置swish-e 索引目录,要和源码目录分开,例如:

, 'swishdir' => '/home/beaver/swish/'


通过以上操作,我们完成了lxr.conf 文件的配置. 接着,我们开始索引操作,进入/usr/local/share/lxr 目录执行以下命令:

./genxref --url=http://localhost/lxr --allversions


这个命令将索引你源码目录下的所有版本,如果你想对某个版本进行索引,可以执行如下命令:
./genxref --url=http://localhost/lxr --version=v1


由于android 源码很大,索引操作大概持续了4个小时,一旦对整个源码进行索引,下次索引的时候,只对修改和添加的部分进行索引,这样时间就很快了。

7.配置apache2 server

首先,在任意目录下创建 lxrserver.conf 文件(名称任意):

sudo vim lxrserver.conf


在文件中添加如下代码:

Alias /lxr /usr/local/share/lxr
<Directory /usr/local/share/lxr>
 Options All
 AllowOverride All
</Directory>


将该文件移动到 apache2的 conf.d 的目录下:

sudo cp lxrserver.conf /etc/apache2/conf.d/


接着我们进入 /usr/local/share/lxr 目录,执行如下命令:

sudo cp .htaccess_cgi .htaccess


到此我们完成了apache2 的配置

8.启动apache2

sudo /etc/init.d/apache2 restart


9.查看代码索引

通过以上全部操作和配置,我们可以进行代码索引,打开浏览器,输入
http://localhost/lxr/source ,即可

我们可以对android中的java 代码,c 代码中变量,函数进行索引,可以对文件进行索引。

遇到的几个问题:

1. http://localhost/lxr/source 查看代码的时候,LXR 不正常工作?
解决方案,修改/usr/local/share/lxr 目录下 source, ident, diff and search 文件的第一行,将原先第一行:

#!perl -T


修改为:

#!/usr/bin/perl


即可,通过“which perl” 命令可查看perl 文件的位置

2.LXR 工作后,发现android源码中对变量、函数无法进行索引,查明原因是在建立索引的过程中,对android 源码中prebuilt 目录进行索引产生了错误,导致不能实现变量,函数的索引,删掉该函数,重新索引一次,即可。

推荐参考文档:
http://egemengozoglu.com/blog/2011/07/lxr-installation-on-ubuntu-10-10/
lxr 下载:http://sourceforge.net/projects/lxr/
lxr 官网安装教程:http://lxr.sourceforge.net/InstallSteps/install1tools.shtml
非常好,对LXR 的搭建起了很大的帮助。
分享到:
评论

相关推荐

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

    首先,LXR(Linux Cross-Reference)是一款强大的开源源码索引工具,它能为大型代码库生成可供搜索的索引,便于快速查找函数、变量、宏定义等。安装LXR需要先获取源码,并遵循以下步骤: 1. 安装依赖:在大多数...

    lxr-0.9.10.gz_lxr_lxr source download

    只需将项目源码路径设置为LXR的索引目标,即可创建一个自定义的源码浏览器。 总的来说,LXR是Linux开发者和内核研究者的重要工具,它使得这个复杂的代码世界变得更加有序和易于理解。通过掌握LXR的使用,开发者可以...

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

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

    lxr-0.3.tar.gz_lxr_lxr tar

    在使用lxr时,你可以指定要索引的源码目录,例如`lxr -d /path/to/source`。之后,lxr会生成一个可供在线浏览的网页接口,通过浏览器访问即可查看源码的详细信息。这个接口提供了搜索、跳转到定义、查看类型定义等...

    lxr-0.9.5.zip_lxr_lxr-0.9.5

    - 初始化索引,将Linux内核源码或者其他代码库导入lxr,运行相应的索引脚本。 - 启动服务,通过web浏览器访问localhost上的lxr服务,即可开始浏览和搜索源码。 3. **lxr的实战应用:** - 在开发过程中遇到问题,...

    LXR.rar_android_contact

    "LXR.rar_android_contact"这个压缩包文件包含的是Android应用程序处理联系人(Contact)功能的源代码,这对于开发者,尤其是那些致力于构建社交应用或者需要管理用户联系信息的App开发者来说,是一个非常有价值的...

    lxr-0.9.6.tgz

    4. **创建索引**:使用LXR提供的工具对源代码库进行索引,这一步可能需要指定源代码目录和相关配置。 5. **启动服务**:编译完成后,通过`lxr`命令启动服务,然后通过Web浏览器访问指定的URL来使用LXR。 6. **更新...

    LXR,PPAR

    方法:我们研究了LXR激动剂(GW3965)或PPARγ(吡格列酮)和PPARδ(GW0742)激动剂在SLE动物模型,雌性MRL / MpJ-Fas / J小鼠和BALB / cAJcl小鼠经p烷治疗后的疗效。 使用单向方差分析和Tukey的真实显着差异检验...

    linux3.2.0源码树

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

    Construction of Recombinant Lentivirus Vector Targeting Bovine LXRα mRNA and Its Silencing Effects on Bovine Muscle Satellite Cells

    牛LXRα基因mRNA重组慢病毒载体的构建及其对牛肌肉卫星细胞的干扰效果,刘永峰,赵璐,肝X受体α(LXRα)基因是核激素受体家族的成员,它可以调节参与胆固醇代谢基因的转录。近期研究发现LXRα被认为是一个调节巨噬...

    计算机网络lxr4.pkt

    计算机网络lxr4.pkt

    LXR Cross Referencer-开源

    通用源代码索引器和交叉引用器,可提供基于Web的源代码浏览以及指向任何标识符的定义和用法的链接。 支持多种语言。 http://lxr.sourceforge.net中的最新信息

    linux 内核源码

    最新版本的Linux内核源代码,可以通过LXR插件对源代码进行查看学习。

    java版商城源码下载-LXR-Kill1:LXR-Kill1

    java版商城源码下载 SpringBoot-SecondKill 介绍 基于SpringBoot+Mybatis+Mysql+中间件构建的商城秒杀系统;其中,中间件主要包括:缓存中间件Redis、消息中间件RabbitMQ、统一协调调度中心中间件ZooKeeper、综合...

    LXRβ调节海马突触可塑性改善APP_PS1小鼠认知功能的研究.pdf

    【LXRβ(肝X受体β)】:LXRβ是属于核受体家族的一种蛋白质,它在调节胆固醇代谢和炎症反应中起着关键作用。研究表明,LXRβ可能通过影响神经元功能和突触可塑性,对阿尔茨海默病的进程产生影响。 【突触可塑性】...

    java6.0源码-opengrok:lxr.php.net中使用的OpenGrokfork

    java6.0源码

    论文研究 - 儿茶素绿茶GMB4克隆通过培养的巨噬细胞暴露的OX-LDL中的LXR信号传导增加ABCA1的mRNA

    LXR激动剂激活LXR导致胆固醇外排增加。 基于生物信息学研究的儿茶素显示作为有效的LXR激动剂候选物,可以用作动脉粥样硬化的抑制剂。 这项研究旨在证明,通过在暴露于ox-LDL的培养的巨噬细胞中利用ABCA1,ABCG1,...

    LXR:LXR鼓合成器固件的源文件

    Sonic Potions LXR Drumsynth固件 LXR是基于32位Cortex-M4处理器和Atmega644 8位CPU的数字鼓合成器。 由朱利安·施密特(Julian Schmidt)开发。 The 'front' folder contains the AVR code The 'mainboard' folder...

    离心冷水机组制冷剂替代物—— LXR 1和 LXR 2 (2002年)

    针对离心式冷水机组制冷剂的特殊要求,遵循优势互补的原则,筛选出了两种新的氟利昂 12(R12)离心式冷水机组替代物 LXR1和 LXR2。对它们的基本物性参数和循环性能与 R12进行了对比;并研究了蒸发温度、冷凝温度、过热度...

    广东发展银行信用卡利息计算工具(含VB源码)

    If (LXR - TX) (LXR - TX, 2) '利息最低收取1RMB RS = TX + SXF + LX '应还金额为:提现金额+手续费+利息 Text3.Text = CStr(RS) Label4.Caption = "其中包含手续费:" & CStr(SXF) & " RMB 利息:" & CStr(LX) ...

Global site tag (gtag.js) - Google Analytics