lxr : Web Base code view system

 我們在閱讀linux源代碼時都有這樣的體會:核心的組織相對松散,在看一個文件時往往要牽涉到其他的頭文件、源代碼文件。如此來回跳轉尋找變量、常量、函數的定義十分不方便,這樣折騰几次,便使讀代碼的心情降到了低點。
 
  lxr(linux cross reference)就是一個解決這個問題的工具:他對指定的源代碼文件建立索引數據庫,利用perl腳本CGI動態生成包含碼的web頁面,你可以用任何一種瀏覽器查閱。在此web頁中,所有變量、常量、函數都以超連接的形式給出,十分方便查閱。比如你閱讀/usr/src/linux/net/socket.c的源代碼,發現函數 get_empty_inode不知道是如何以及在哪里定義的,這時候你只要點擊 get_empty_inode,lxr將返回此函數的定義、實現以及各次引用是在什麼文件的哪一行,注意,這些信息也是超連接,點擊將直接跳轉到相應的文件相應的行。另外lxr還提供標識符搜索、文件搜索,結合程序 glimpse還可以提供對所有的[url=http://www.pccode.net].net" class="wordstyle"源碼文件進行全文檢索,甚至包括注釋!
 
  下面將結合實例介紹一下lxr和glimpse的基本安裝和使用,由於glimpse比較簡單,就從它開始:  
首先訪問站點: http://glimpse.cs.arizona.edu/ 得到glimpse的[url=http://www.pccode.net].net" class="wordstyle"源碼,比如我得到的是glimpse-4.12.5.tar.gz . 用root登錄,在任一目錄下用tar zxvf glimpse-4.12.5.tar.gz解開壓縮包,在當前目錄下出現新目錄glimpse-4.12.5 .進入該目錄,執行make即可。進入bin目錄,將文件glimpse和glimpseindex拷貝到/bin或/usr/bin下即可。如果單獨使用glimpse,那么只要簡單的執行glimpseindex foo即可,其中foo是你想要索引的目錄,比如說是/usr/src/linux .glimpseindex的執行結果是在你的起始目錄下產生若干.glimpse*的索引文件。然后你只要執行glimpse yourstring即可查找/usr/src/linux下所有包含字符串yourstring的文件。  
  對於lxr,你可以訪問 http://lxr.linux.no/得到它的源代碼。解包后,遵循如下步驟:  
  /*下面的文字來源於lxr的幫助文檔以及本人的安裝體會*/  
  1)修改Makefile中的變量PERLBIN和INSTALLPREFIX,使它們分別為  
  perl程序的位置和你想lxr安裝的位置.在我的機器上,PERLBIN的值為/usr/bin/perl.至於INSTALLPREFIX,有如下原則,lxr的安裝路徑必須是web服務器能有權限訪問。因此它的值簡單一點可取/home/httpd/html/lxr (對於Apache web server)。  
  2)執行 make install  
  3)修改$INSTALLPREFIX/http/lxr.conf :  
  baseurl : 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 # 假如對linux核心代碼索引  
  dbdir : /home/httpd/html/lxr/dbdir/ #dbdirk可任意起名,且位置任意  
  glimpsebin: /usr/bin/glimpse #可執行程序glimpse的位置  
  4)在$INSTALLPREFIX/http/下增加一個文件.htaccess 內容:  
  《Files ~ (source|search|ident|diff|find)$》***  
  SetHandler cgi-script  
  《/Files》  
  上面這個文件保證Apache server將几個perl文件作為cgi-script.  
  5)按照lxr.conf中的設置建立dbdir ,按照上例,建立目錄  
  /home/httpd/html/lxr/dbdir  
  進入這個目錄執行$INSTALLPREFIX/bin/genxref yourdir  
  其中yourdir是[url=http://www.pccode.net].net" class="wordstyle"源碼目錄,比如/usr/src/linux  
  如果要結合glimpse,則執行glimpseindex -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)進入/etc/rc.d/init.d/ 執行  
  killall httpd  
  ./httpd start  
  進入X ,用瀏覽器 http://yourIP/lxr/http/blurb.html大功告成 ,這下你可以讀[url=http://www.pccode.net].net" class="wordstyle"源碼了。  
  注意:以上只是lxr和glimpse的基本用法,進一步的說明可以參考連機文檔。