笔者一直是使用Source Insight来阅读内核代码,无奈只有windows版,而且SI存在很多解析不清楚的问题,越来越难用。
LXR http://lxr.linux.no/ 这里可以在线浏览源码,而且解析代码的效果很好,就是需要联网才能用,本文讨论把LXR做成本地的一个应用,这样在没联网的情况下也可以使用。
(一)系统环境ubuntu,需要的软件apache lxr glimpse http://webglimpse.net/
apt-get install apache2 lxr wget http://webglimpse.net/trial/glimpse-latest.tar.gz
(二)安装之后配置LXR
在/usr/share/lxr/http/目录下建立文件 .htaccess,文件内容只有三行(注意第一行“~”和“(”之间有一个空格)
$ vim .htaccess
<Files ~ (source|search|ident|diff|find)$>
SetHandler cgi-script
</Files>
(三)配置Apache
sudo vim /etc/apache2/site-enable/000-default增加:
Alias /lxr /usr/share/lxr
<Directory /usr/share/lxr/>
Options All
AllowOverride All
</Directory>
(四)复制linux源代码
去linux官方网站下载最近的内核代码(当然,以前的也可以)
复制linux源代码到/usr/share/lxr/source
sudo cp /home/***/Download/linux-3.0.4.tar.bz2 /usr/share/lxr/source
解压:
tar xvjf linux-3.0.4.tar.bz2
重命名解压后的文件夹
sudo mv linux-3.0.4 3.0.4
(五)生成数据文件
cd /usr/share/lxr/source
生成关键字交叉索引数据库
sudo genxref 3.0.4/
接下来要等待一段比较长的时间,因为它要扫描文件。
接下来,生成freetext交叉索引数据库:
glimpseindex -H . 3.0.4/
更改权限,使任何人都可以读取此目录的文件
sudo chmod +r -R ./*
(六)修改lxr配置文件
原文:
sourceroot: /usr/share/lxr/source/$v/linux/
dbdir: /usr/share/lxr/source/dbdir
改成 :
sourceroot: /usr/share/lxr/source/3.0.4 #刚刚生成的fileidx 和xref 的地址
dbdir: /usr/share/lxr/source #生成的.glimpse_filenames这些文件的位置
(七)阅读源代码
重新启动apache2
sudo /etc/init.d/apache2 restart
打开浏览器,输入http://localhost/lxr/http/source就能浏览本地的内核代码了