通过lxr可以帮助你在浏览器里浏览内核源码,其提供内核字符的定义和使用的链接。有助于学习和理解内核源码。
安装过程参考AmirWatad.com的"Browser the Linux Kernel Source with LXR"
链接:
http://www.amirwatad.com/blog/archives/2009/05/12/browse-the-linux-kernel-source-with-lxr/
作者提到,当他要看内核源码时,通常要打开LXR,Google,还有shell来进行grep,可见LXR的意义。
下面的安装过程在Ubuntu 9.10里通过:
1. 安装Apache (http server)
sudo apt-get install apache2 libapache2-mod-perl2
sudo apt-get install libcgi-simple-perl libcgi-ajax-perl libhtml-parser-perl libtemplate-perl
2. 安装LXR
sudo apt-get install lxr
3. 安装Glimpse,是LXR使用的index工具
a. 先从Glimpse的主页下载
http://webglimpse.net/trial/glimpse-latest.tar.gz
b. 解压
tar xzf glimpse-latest.tar.gz
c. 安装flex(glimpse安装时需要使用)
sudo apt-get install flex
d. 到glimpse源码目录
./configure
make
sudo make install
4. 打开/etc/apache2/httpd.conf,增加如下:
ServerName localhost
# Linux Cross Reference Stuff
Alias /lxr /usr/share/lxr
<Directory /usr/share/lxr>
Options All
AllowOverride All
</Directory>
注: 如果不加ServerName localhost,可能导致下面的警告
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
5. 打开 /usr/share/lxr/http/.htaccess,加入
<Files ~ (search|source|ident|diff|find)$>
SetHandler cgi-script
</Files>
6. 进入 /usr/share/lxr/source/
7. 拷贝内核代码至当前目录
如:linux-2.6.24.7_nxp
8. 把版本号写入/usr/share/lxr/source/versions
echo linux-2.6.24.7_nxp > /usr/share/lxr/source/versions
9. 创建默认的版本显示到源码的符号链接
ln -s /usr/share/lxr/source/linux-2.6.24.7_nxp /usr/share/lxr/source/defversion
10. 创建检查参考(cross-reference)
cd /usr/share/lxr/source
sudo genxref
sudo glimpseindex -H . .
11. 把相关文件和目录的属性设置为http server可以访问
chown www-data.www-data .glimpse_*
chown -R www-data.www-data /usr/share/lxr/
chown www-data.www-data fileidx
12. 启动apache
sudo /etc/init.d/apache2 restart
注:遇到如下问题
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
处理方法,
> sudo lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 1324 root 6u IPv6 6641 0t0 TCP *:www (LISTEN)
firefox 4503 qianjiang 22u IPv4 89919 0t0 TCP qianjiang-laptop.local:56010->nrt04s01-in-f99.1e100.net:www (ESTABLISHED)
可以看出xinetd 在使用80端口,所以,
> sudo kill -9 1324
启动,OK
又注(2010-06-28):如果stop xinetd,发现tftp不能工作。所以需要寻求新的解决方法,如果能够改变www的端口地址。。。方法是打开/etc/services,把www的tcp和udp端口改为81
13. 打开/usr/share/lxr/http/lxr.conf
把sourceroot: /usr/share/lxr/source/$v/linux/
改成sourceroot: /usr/share/lxr/source/$v
注:如果改成/usr/share/lxr/source/$v/可能导致[file search]之后的结果,不能打开,原因见:/usr/share/lxr/http/find line 57
$file =~ s/^$sourceroot//;
这里是要把$file里面的绝对路径去掉,但是因为$v已经携带/符号,所以出错,没有完成替换
14. 打开firefox,输入
http://localhost/lxr/http/blurb.html
注:
a. 发现[freetext search]工作不正常
检查发现/usr/share/lxr/search line 64,调用glimpsebin
但是,在lxr.conf中定义的glimpsebin路径为/bin/glimpsebin,应该改成
glimpsebin: /usr/local/bin/glimpse
安装过程参考AmirWatad.com的"Browser the Linux Kernel Source with LXR"
链接:
http://www.amirwatad.com/blog/archives/2009/05/12/browse-the-linux-kernel-source-with-lxr/
作者提到,当他要看内核源码时,通常要打开LXR,Google,还有shell来进行grep,可见LXR的意义。
下面的安装过程在Ubuntu 9.10里通过:
1. 安装Apache (http server)
sudo apt-get install apache2 libapache2-mod-perl2
sudo apt-get install libcgi-simple-perl libcgi-ajax-perl libhtml-parser-perl libtemplate-perl
2. 安装LXR
sudo apt-get install lxr
3. 安装Glimpse,是LXR使用的index工具
a. 先从Glimpse的主页下载
http://webglimpse.net/trial/glimpse-latest.tar.gz
b. 解压
tar xzf glimpse-latest.tar.gz
c. 安装flex(glimpse安装时需要使用)
sudo apt-get install flex
d. 到glimpse源码目录
./configure
make
sudo make install
4. 打开/etc/apache2/httpd.conf,增加如下:
ServerName localhost
# Linux Cross Reference Stuff
Alias /lxr /usr/share/lxr
<Directory /usr/share/lxr>
Options All
AllowOverride All
</Directory>
注: 如果不加ServerName localhost,可能导致下面的警告
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
5. 打开 /usr/share/lxr/http/.htaccess,加入
<Files ~ (search|source|ident|diff|find)$>
SetHandler cgi-script
</Files>
6. 进入 /usr/share/lxr/source/
7. 拷贝内核代码至当前目录
如:linux-2.6.24.7_nxp
8. 把版本号写入/usr/share/lxr/source/versions
echo linux-2.6.24.7_nxp > /usr/share/lxr/source/versions
9. 创建默认的版本显示到源码的符号链接
ln -s /usr/share/lxr/source/linux-2.6.24.7_nxp /usr/share/lxr/source/defversion
10. 创建检查参考(cross-reference)
cd /usr/share/lxr/source
sudo genxref
sudo glimpseindex -H . .
11. 把相关文件和目录的属性设置为http server可以访问
chown www-data.www-data .glimpse_*
chown -R www-data.www-data /usr/share/lxr/
chown www-data.www-data fileidx
12. 启动apache
sudo /etc/init.d/apache2 restart
注:遇到如下问题
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
处理方法,
> sudo lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 1324 root 6u IPv6 6641 0t0 TCP *:www (LISTEN)
firefox 4503 qianjiang 22u IPv4 89919 0t0 TCP qianjiang-laptop.local:56010->nrt04s01-in-f99.1e100.net:www (ESTABLISHED)
可以看出xinetd 在使用80端口,所以,
> sudo kill -9 1324
启动,OK
又注(2010-06-28):如果stop xinetd,发现tftp不能工作。所以需要寻求新的解决方法,如果能够改变www的端口地址。。。方法是打开/etc/services,把www的tcp和udp端口改为81
13. 打开/usr/share/lxr/http/lxr.conf
把sourceroot: /usr/share/lxr/source/$v/linux/
改成sourceroot: /usr/share/lxr/source/$v
注:如果改成/usr/share/lxr/source/$v/可能导致[file search]之后的结果,不能打开,原因见:/usr/share/lxr/http/find line 57
$file =~ s/^$sourceroot//;
这里是要把$file里面的绝对路径去掉,但是因为$v已经携带/符号,所以出错,没有完成替换
14. 打开firefox,输入
http://localhost/lxr/http/blurb.html
注:
a. 发现[freetext search]工作不正常
检查发现/usr/share/lxr/search line 64,调用glimpsebin
但是,在lxr.conf中定义的glimpsebin路径为/bin/glimpsebin,应该改成
glimpsebin: /usr/local/bin/glimpse
转载于:https://blog.51cto.com/jiangjqian/339200