linux下搭建查看内核源代码工具lxr
linux下阅读内核源代码,通常都使用vim + ctags 或者
lxr进行,我个人比较倾向于lxr,因为lxr提供了良好的界面,函数和定义都使用超链接标记出来,可以很方便的跟踪到函数内部去查看详细或者查看数据
结构的定义等。网上有现成的网站提供了这样的服务,如果你只是偶尔看看内核源代码的话,其实直接登录某些提供这样服务的网站就差不多了,比如LXR,这个网站提供的体验相当不错,我以前就是经常在这个网站上查看源代码的,毕竟搭建这个环境的过程中,要建立文件检索的过程还是比较漫长的。
利用lxr查看内核源代码,其实就是搭建一个本地的网站,在ubuntu上,我们可以快速的完成这些工作。先大体的了解下需要的工具,apache2,glimpse,lxr。下面就正式开始搭建我们自己的lxr.
一、安装apache2:
sudo apt-get install apache2
二、安装glimpse:
先去网站下载最新的源代码glimpse-latest.tar.gz,下载网址:http://webglimpse.net/download.php,然后解压到当前目录下
tar -xvzf glimpse-latest.tar.gz
再接着进入解压后的目录下,比如我的是:
cd glimpse-4.18.6/
在编译之前,首先看看你的机器上是否已经安装了flex,因为编译glimpse的时候需要这个软件。如果没有的话,那么进行安装:
sudo apt-get install flex
接着进行编译:
./config
make
sudo make install
执行完上面的步骤后,将生成的glimpse glimpseindex 拷贝到/bin目录下:
cd /bin
sudo cp glimpse glimpseindex /bin
三、安装lxr
sudo apt-get install lxr
新建/usr/share/lxr/http/.htaccess文件
在里面增加如下内容:
SetHandler cgi-script
四、复制linux源代码
去linux官方网站(http://www.kernel.org/)下载最近的内核代码(当然,以前的也可以)
复制linux源代码到/usr/share/lxr/source
sudo cp /home/huangwei/Download/linux-2.6.33.2.tar.bz2 /usr/share/lxr/source
解压:
tar xvjf linux-2.6.33.2.tar.bz2
重命名解压后的文件夹
sudo mv linux-2.6.33.2 2.6.33
五、生成数据文件
cd /usr/share/lxr/source
生成关键字交叉索引数据库
sudo genxref 2.6.33/
接下来要等待一段比较长的时间,因为它要扫描文件。
接下来,生成freetext交叉索引数据库:
glimpseindex -H . 2.6.33/
在刚才glimpseindex时Index-directory: "/usr/share/lxr/source"
的目录下,更改权限,使任何人都可以读取该文件
sudo chmod +r .glimpse*
六、修改lxr配置文件
原文:
sourceroot: /usr/share/lxr/source/$v/linux/
dbdir: /usr/share/lxr/source/dbdir
改成 :
sourceroot: /usr/share/lxr/source/2.6.33 #刚刚生成的fileidx 和xref 的地址
dbdir: /usr/share/lxr/source #生成的.glimpse_filenames这些文件的位置
七、阅读源代码
重新启动apache2
sudo /etc/init.d/apache2 restart
打开浏览器,输入http://localhost/lxr/http/source就能浏览本地的内核代码了
阅读的时候可以看到页面顶部有
~ [ source navigation ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~
source navigation是用户查看页面的界面
identifier search是查找某个变量名、结构名、函数名的界面
freetext search是查找任何字符串的界面
file search查找某个文件本方法在ubuntu9.04、9.10、10.04等测试过