我們?cè)陂喿xlinux源代碼時(shí)都有這樣的體會(huì):核心的組織相對(duì)松散,,
在看一個(gè)文件時(shí)往往要牽涉到其他的頭文件,、源代碼文件。如此來(lái)回 跳轉(zhuǎn)尋找變量,、常量,、函數(shù)的定義十分不方便,這樣折騰幾次,便使 讀代碼的心情降到了低點(diǎn),。 lxr(linux cross reference)就是一個(gè)解決這個(gè)問(wèn)題的工具:他對(duì) 你指定的源代碼文件建立索引數(shù)據(jù)庫(kù),,利用perl腳本CGI動(dòng)態(tài)生成包含 源碼的web頁(yè)面,你可以用任何一種瀏覽器查閱,。在此web頁(yè)中,,所有 的變量、常量,、函數(shù)都以超連接的形式給出,,十分方便查閱。比如你 在閱讀/usr/src/linux/net/socket.c的源代碼,,發(fā)現(xiàn)函數(shù) get_empty_inode不知道是如何以及在哪里定義的,,這時(shí)候你只要點(diǎn)擊 get_empty_inode,lxr將返回此函數(shù)的定義、實(shí)現(xiàn)以及各次引用是在什 么文件的哪一行,,注意,,這些信息也是超連接,點(diǎn)擊將直接跳轉(zhuǎn)到相應(yīng) 的文件相應(yīng)的行,。另外lxr還提供標(biāo)識(shí)符搜索,、文件搜索,結(jié)合程序 glimpse還可以提供對(duì)所有的源碼文件進(jìn)行全文檢索,,甚至包括注釋,! 下面將結(jié)合實(shí)例介紹一下lxr和glimpse的基本安裝和使用,由于 glimpse比較簡(jiǎn)單,,就從它開始: 首先訪問(wèn)站點(diǎn): target="_blank">http://glimpse.cs./ 得到glimpse 的源碼,比如我得到的是glimpse-4.12.5.tar.gz . 用root登錄,,在 任一目錄下用tar zxvf glimpse-4.12.5.tar.gz解開壓縮包,在當(dāng)前 目錄下出現(xiàn)新目錄glimpse-4.12.5 .進(jìn)入該目錄,,執(zhí)行make即可。進(jìn) 入bin目錄,,將文件glimpse和glimpseindex拷貝到/bin或/usr/bin下 即可,。如果單獨(dú)使用glimpse,那么只要簡(jiǎn)單的執(zhí)行g(shù)limpseindex foo 即可,,其中foo是你想要索引的目錄,,比如說(shuō)是/usr/src/linux .glimpseindex 的執(zhí)行結(jié)果是在你的起始目錄下產(chǎn)生若干.glimpse*的索引文件。然后 你只要執(zhí)行g(shù)limpse yourstring即可查找/usr/src/linux下所有包含 字符串yourstring的文件,。 對(duì)于lxr,,你可以訪問(wèn)lxr.linux.no得到它的源代碼解包后,遵循如下步驟: /*下面的文字來(lái)源于lxr的幫助文檔以及本人的安裝體會(huì)*/ 1)修改Makefile中的變量PERLBIN和INSTALLPREFIX,使它們分別為 perl程序的位置和你想lxr安裝的位置.在我的機(jī)器上,,PERLBIN的值為 /usr/bin/perl .至于INSTALLPREFIX,,有如下原則,,lxr的安裝路徑 必須是web服務(wù)器能有權(quán)限訪問(wèn)。因此它的值簡(jiǎn)單一點(diǎn)可取 /home/httpd/html/lxr (對(duì)于Apache web server),。 2)執(zhí)行 make install 3)修改$INSTALLPREFIX/http/lxr.conf : baseurl : target="_blank">http://yourIP/lxr/http/ htmlhead: /home/httpd/html/lxr/http/template-head htmltail: /home/httpd/html/lxr/http/template-tail htmldir: /home/httpd/html/lxr/http/template-dir sourceroot : /usr/src/linux # 假如對(duì)linux核心代碼索引 dbdir : /home/httpd/html/lxr/dbdir/ #dbdirk可任意起名,,且位置任意 glimpsebin: /usr/bin/glimpse #可執(zhí)行程序glimpse的位置 4)在$INSTALLPREFIX/http/下增加一個(gè)文件.htaccess 內(nèi)容: <Files ~ (source|search|ident|diff|find)$> *** SetHandler cgi-script </Files> 上面這個(gè)文件保證Apache server將幾個(gè)perl文件作為cgi-script. 5)按照l(shuí)xr.conf中的設(shè)置建立dbdir ,按照上例,建立目錄 /home/httpd/html/lxr/dbdir 進(jìn)入這個(gè)目錄執(zhí)行$INSTALLPREFIX/bin/genxref yourdir 其中yourdir是源碼目錄,比如/usr/src/linux 如果要結(jié)合glimpse,,則執(zhí)行g(shù)limpseindex -H . yourdir 6)修改 /etc/httpd/conf/access.conf ,加入 <Directory /home/httpd/html/lxr/http> Options All AllowOverride All order allow,deny allow from all </Directory> 7)進(jìn)入/etc/rc.d/init.d/ 執(zhí)行 killall httpd ./httpd start 進(jìn)入X ,,用瀏覽器 target="_blank">http://yourIP/lxr/http/blurb.html 大功告成 ,這下你可以舒心的讀源碼了,。 注意:以上只是lxr和glimpse的基本用法,,進(jìn)一步的說(shuō)明可以 參考連機(jī)文檔。如有問(wèn)題請(qǐng)與 href="mailto:sea_cloud@263.net">[email protected] 聯(lián)系,。 |
|