[转]搭建lxr查看linux内核源代码

原地址:http://www.cnblogs.com/huangwei/archive/2010/05/13/1734935.html

     linxu下阅读内核源代码,通常都使用vim + ctags 或者 lxr进行,我个人比较倾向于lxr,因为lxr提供了良好的界面,函数和定义都使用超链接标记出来,可以很方便的跟踪到函数内部去查看详细或者查看数据结构的定义等。网上有现成的网站提供了这样的服务,如果你只是偶尔看看内核源代码的话,其实直接登录某些提供这样服务的网站就差不多了,比如LXR,这个网站提供的体验相当不错,我以前就是经常在这个网站上查看源代码的,毕竟搭建这个环境的过程中,要建立文件检索的过程还是比较漫长的。

 

  利用lxr查看内核源代码,其实就是搭建一个本地的网站,在ubuntu上,我们可以快速的完成这些工作。先大体的了解下需要的工具,apache2glimpselxr。下面就正式开始搭建我们自己的lxr.

 

一、安装apach2

sudo apt-get install apache2

 

二、安装glimpse:

先去网站下载最新的源代码glimpse-latest.tar.gz,然后解压到当前目录下

tar -xvgf 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文件

在里面增加如下内容:

<Files ~ (search|source|ident|diff|find)$>
SetHandler cgi-script
</Files>

 

四、复制linux源代码

linux官方网站下载最近的内核代码(当然,以前的也可以)

 

复制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/

更改权限,使任何人都可以读取该文件

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查找某个文件

 

根据Nickelzhang的建议,贴上我自己装完后的截图:

clip_image002 

原文地址:https://www.cnblogs.com/foxhengxing/p/1961373.html