前言
Lxr 對指定的源代碼文件建立索引數據庫,利用 perl 腳本 CGI 動態生成包含源碼的 web 頁面,可以用任一瀏覽器查閱。在此 web 頁中,所有的變量、常量、函數都以超連接的形式給出,十分方便查閱。
步驟 1 :安裝軟件
1) 安裝 apache2: sudo apt-get install apache2
2) 安裝 lxr, sudo apt-get install lxr
3) 安裝 glimpse, 下載最新版本:
tar -xvzf glimpse-latest.tar.gz
cd glimpse- 4.18.5
./configure
make
sudo make install
步驟 2 :設置 lxr
4) 編輯: /usr/share/lxr/http/lxr.conf
baseurl: http://localhost/lxr/http/
其中 localhost 改爲您的電腦的 IP 地址。
/lxr/http/ 對應後面在 apache 配置文件中的設置路徑。
修改 glimpse 路徑:
glimpsebin: /usr/local/bin/glimpse
5) /usr/share/lxr/http/ 下添加文件 .htaccess, 內容爲:
<Files ~ (search|source|ident|diff|find)$>
SetHandler cgi-script
</Files>
步驟 3 :建立源碼倉庫
6) /usr/share/lxr/source 下建立兩個文件:
/usr/share/lxr/source/versions,
/usr/share/lxr/source/defversion
很明顯, versions 表示所有內核版本的集合, 而 defversion 表示缺省使用的版本。 我們目前使用 2.6.21 , 所以這兩個文件裏都寫上 2.6.21
7) 將內核源代碼拷貝到 /usr/share/lxr/source/2.6.21/linux 下。
8) /usr/share/lxr/source/2.6.21 下運行: ( 生成 freetext 交叉索引數據庫 )
glimpseindex -H . ./linux
9) /usr/share/lxr/source/2.6.21 下運行:(生成關鍵字交叉索引數據庫)
genxref ./linux
10) /usr/share/lxr/source/2.6.21 下運行:
chmod a+x *
chmod a+x .*
步驟 4 :設置瀏覽器
11) 編輯, /etc/apache2/sites-available/default , 添加:
Alias /lxr /usr/share/lxr
<Directory /usr/share/lxr>
Options All
AllowOverride All
</Directory>
12) 重啓 apache2:
service apache2 restart
13) 現在可以瀏覽代碼了:
http://192.168.0.137/lxr/http/blurb.html
更進一步:
Lxr 支持多個內核版本, 您只需要在 /usr/share/source 下添加相應的目錄, 並將該版本添加到 /usr/share/lxr/source/versions, 然後按照以上目錄生成數據庫文件即可。
另外, http://lxr.linux.no/linux+v2.6.27/ 有現成做好的交叉索引。
====
http://blog.csdn.net/zjujoe/article/details/4199025
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
LXR安裝詳解-ubuntu環境下測試
1.安裝apache2
sudo apt-get install apache2
# wget http://webglimpse.net/trial/glimpse-latest.tar.gz
# tar xvzf glimpse-latest.tar.gz
# cd glimpse-4.18.6/cd ctags-5.8
# ./configure
# make
# make install
3.安裝lxr
sudo apt-get install lxr
4. 在/etc/apache2/httpd.conf 末尾加上以下內容:
Alias /lxr /usr/share/lxr
<Directory /usr/share/lxr>
Options All
AllowOverride All
</Directory>
這樣可以達到http://localhost/lxr/ =>/usr/share/lxr
5. 在/usr/share/lxr/http下創建文件 .htaccess, 並寫入一下內容:
<Files ~(search|source|ident|diff|find)$>
SetHandler cgi-script
</Files>
6.
sudo /etc/init.d/apache2 restart
7.
mkdir /usr/share/lxr/source/2.6.37.2
然後在/usr/share/lxr/source/2.6.37.2下創建linux符號連接
ln -s /home/louis/下載/linux-2.6.37.2/usr/share/lxr/source/2.6.22/linux
(源碼地址)
8. 創建/usr/share/lxr/source/versions,這裏記錄所有要看的版本,內容是
2.6.37.2
2.6.22(可有可無)
要保證2.6.37.2 =>/usr/share/lxr/source/2.6.37.2
創建/usr/share/lxr/source/defversion,這裏記錄缺省要看的版本,內容是
2.6.37.2
之所以是這兩個文件,見/usr/share/lxr/http/lxr.conf裏的相關設置
9. 建立索引
cd /usr/share/lxr/source/2.6.37.2/
sudogenxref 2.6.37.2 //這樣會在當前目錄生成fileidx和xref
sudo glimpseindex-H /usr/share/lxr/source/2.6.37.2/ /usr/share/lxr/source/2.6.37.2/linux
(需要等待一段時間)
之所以是這個目錄(/usr/share/lxr/source/2.6.37.2/),見/usr/share/lxr/http/lxr.conf裏的相關設置(database項)
10.修改屬性
sudo chmod +r -R /usr/share/lxr/source/2.6.37.2/*
11.
sudo /etc/init.d/apache2 restart
http://localhost/lxr/http/blurb.html //成功查看源碼
====
http://blog.sina.com.cn/s/blog_6c6d405f0100oq6l.html
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
關於LXR和glimpse配置實現方便閱讀Linux源代碼的過程注:本文主要參考下面的資料 時間:2010-1-15
參考資料1:
http://hi.baidu.com/fanzier/blog/item/3ad7d7546f58a55dd009066b.html
資料2:
http://blog.csdn.net/zjujoe/archive/2009/05/18/4199025.aspx
其中的相同部分沒有做修改,在此聲明,有“注意:”的地方是結合自己的情況進行的修改。
(本人機器的OS---Ubuntu 9.10)
1.安裝apache2
$sudo apt-get install apache2
2.安裝lxr
$sudo apt-get install lxr
編輯修改lxr.conf文件
$sudo vi /usr/share/lxr/http/lxr.conf
修改glimpse的路徑
找到 glimpsebin這一行,修改成你機器上glimpse的位置(自己查看使用$whereis glimpse)
glimpsebin: /usr/local/bin/glimpse
注:紅色部分是我機器上的glimpse的位置
3. 在/etc/apache2/httpd.conf 末尾加上以下內容:
Alias /lxr /usr/share/lxr
Options All
AllowOverride All
這樣可以達到http://localhost/lxr/ =>/usr/share/lxr
4. 在/usr/share/lxr/http下創建文件 .htaccess,
$sudo vi /usr/share/lxr/http/.htaccess
並添加下面的內容:
SetHandler cgi-script
5.
$sudo /etc/init.d/apache2 restart
6. 創建/usr/share/lxr/source/XX目錄 (XX爲版本號)
$mkdir /usr/share/lxr/source/2.6.30.10
然後在/usr/share/lxr/source/2.6.30.10 下創建linux符號連接
$ln -s /home/my/linux-2.6.30.10 /usr/share/lxr/source/2.6.30.10/linux
注:這裏的黃色部分改成你目前的源代碼的所在目錄,比如 /home/you/linux-2.6.30.10
7. 創建/usr/share/lxr/source/versions,這裏記錄所有要看的版本
sudo vi /usr/share/lxr/source/versions
將下面的版本號(自己的源代碼版本號)添加到versions中
2.6.30.10
2.6.32.3
創建/usr/share/lxr/source/defversion,這裏記錄缺省要看的版本,
$sudo vi /usr/share/lxr/source/defversion
添加缺省查看的版本號:
2.6.30.10
這裏爲什麼是這兩個文件,見/usr/share/lxr/http/lxr.conf裏的相關設置
8. 建立索引
$cd /usr/share/lxr/source/2.6.30.10/
$sudo glimpseindex -H ../ ./linux
(Should be $sudo glimpseindex -H . ./linux )
$sudo genxref ./linux
上面的兩個命令運行時間稍微長一些,主要是生成freetext交叉索引數據庫(glimpseindex)和關鍵字交叉索引數據庫(genxref),上面兩個命令不可顛倒順序,見下面的注注:
1. 資料1原文中的順序是:
$sudo glimpseindex -H /usr/share/lxr/source/2.6.22/ /usr/share/lxr/source/2.6.22/linux
$sudo genxref 2.6.22
自己按照上面實驗順序後,發現最後的源碼不能很好的鏈接上,不可以實現符號跳轉,僅僅是顯示代碼
2. 這裏如果沒有安裝glimpse,運行sudo glimpseindex -H ../ ./linux ,會提示沒有相關的命令glimpseindex
於是安裝glimpse,需要到http://webglimpse.net/download.php下載
glimpse-latest.tar.gz
然後在下載文件所在的目錄執行
$
tar
-zxvf
glimpse-latest.tar.gz
$
./configure
$
make //注意這裏會提示沒有flex命令,需要安裝flex ,直接sudo apt-get install
flex
$
sudo
make
install
8.修改屬性
$sudo chmod +r -R /usr/share/lxr/source/2.6.30.10/*
9.
$sudo /etc/init.d/apache restart
啓動瀏覽器輸入下面的URL即可查看,很方便呀!!
http://localhost/lxr/http/blurb.html
10. 如果還要添加其他的版本源代碼,只需要按照順序從第6步執行一直到第9步,這樣就可以查看多個版本的源代碼了,比較方便。
11. 附加心得:
最初在網上的找linux下的源代碼查看工具,介紹的好幾種,最初實驗的kscope,有個問題就是他需要依賴下面的軟件:
Qt4 version 4.4.0 and above
QScintilla2 (
http://www.riverbankcomputing.co.uk/software/qscintilla/download
)
Standard build tools
安裝上面的軟件之後,make還是出錯,發現提示一些cpp文件中未定義的符號,這個要一個個修改比較麻煩了。
所以後來又試了一下 deb包,安裝提示需要libqscintilla2-3,好下載先安裝這個libqscintilla2-3,然後安裝kscope 的deb包,成功了!!後來發現根本啓動不了,提示segmentation fault,這個鬱悶壞了,網上有的說的是個bug,然後試着安裝低版本的kscope—1.6.2,還是出現同樣的segmentation fault,唉,暫時想不出解決反感,只好放棄kscope了。
接着實驗global,發現好像是命令行的東西,要是命令行熟悉的話,就用vim+ctags了,只是想找稍微簡單一點,我只是想瀏覽源代碼,不想提前記好多命令,呵呵,有點懶啦,只好作罷
最後選擇據說比較難安裝的LXR,網上這方面的資料很多,一步一步接着做,然後修改了其中的一些敘說不完善的地方,發現竟然成功了,很好,原來這個複雜的東西不是這麼誇張,比前面的要好點,還是幸虧這麼完備的網上共享的資料呀,感謝那麼多對這些資料做出過補充完善的作者!!
最後的一點缺憾是不能像LXR主站上的服務器上的源代碼的那種鏈接跳轉,可能是哪裏沒有配置正確,不過還是邁出了一大步,下面在繼續研究吧!!!----已經解決,就是前面的glimpseindex和genxref運行順序問題,
12.將來問題
目前發現查看源代碼跳轉有時還是比較慢,我感覺是數據庫查找效率問題,這是算法的問題吧,應該不牽涉瀏覽器的問題吧??
歡迎大家提出自己的看法。
====
http://bbs.chinaunix.net/thread-1940161-1-1.html