本教學的OS使用:ubuntu 14.04 64bit(但通常沒有差別)
首先需要的軟體:
LXR 0.3、
Glimpse、Apache
Apache安裝:
這部份網路上已有很多的教學文了,主要的是要開啟CGI的功能
sudo a2enmod cgi
sudo service apache2 restart
安裝完後,把網頁的資料放在這個底下便可瀏覽
/var/www/html/(網頁or資料)
可以先把他放在自已方便的地方,這邊就先放在家目錄下的/teach資料夾
並且將它解壓縮:
tar xf glimpse-latest.tar.gz
tar xf lxr-0.3.1.tar.gz
安裝glimpse:
cd glimpse-4.18.6/
./configure
sudo make
sudo make install
安裝LXR:
先進入/lxr-0.3
cd lxr-0.3
檢查perl的版本和路徑
vim Makefile
修改安裝路徑
一定要在/var/www/html/底下
之後開始安裝
make
sudo make install
之後就可以看到/var/www/html/底下會看到lxr2,那就安裝完了~
修改apache2的設定:
cd /etc/apache2
sudo vim apache2.conf
在apache2.conf文件中合適式的地方加入下列的設定文字
<Directory /var/www/html/lxr2/http>
Options All
AllowOverride All
order allow,deny
allow from all
</Directory>
上方紅字的部份為你安裝LXR的地方
重啟Apache
sudo service apache2 restart
之後開始來設定LXR的設定檔
cd /var/www/html/lxr2/http
sudo vim lxr.conf
這邊會有些不好懂,但我會盡力......的說明
在這個設定檔主要會看到的是下面的文字
variable: v, Version, [/local/lxr/source/versions], [/local/lxr/source/defversion]
在這裡的variable有點像是datatype的在宣告一個變數v
Version則是顯示在網頁上
後面的兩個中括號,前面那個像是list的概念
前面那個則是在list中,哪個為預設值
這裡寫成/local/lxr/source/versions的路徑,是指要去這個路徑下讀versions這個檔案中的清單
variable: a, Architecture, (i386, alpha, m68k, mips, ppc, sparc, sparc64)
而使用小括號則是括號中為list,其中第一個為預設值
baseurl: http://lxr/
這個是你網路的入口
htmlhead: /local/lxr/http/template-head
htmltail: /local/lxr/http/template-tail
htmldir: /local/lxr/http/template-dir
然後網站的html語法的的template
sourceroot: /local/lxr/source/$v/linux/
srcrootname: Linux
原始碼的位置
incprefix: /include
dbdir: /local/lxr/source/$v/
原始碼資料庫的位置,因為可能不只放一個版本而已
glimpsebin: /local/bin/glimpse
(是不是看不懂......沒關系,和我做一次吧~)
//首先這行
variable: v, Version, [/local/lxr/source/versions], [/local/lxr/source/defversion]
//改成這樣,讓可以讀到versions這個檔案
variable: v, Version, [/var/www/html/lxr2/source/versions], [/var/www/html/lxr2/source/defversion]
//這三行
htmlhead: /local/lxr/http/template-head
htmltail: /local/lxr/http/template-tail
htmldir: /local/lxr/http/template-dir
//改成這樣
htmlhead: /var/www/html/lxr2/http/template-head
htmltail: /var/www/html/lxr2/http/template-tail
htmldir: /var/www/html/lxr2/http/template-dir
(是不是有感覺了...)
//這行
sourceroot: /local/lxr/source/$v/linux/
//改成
sourceroot: /var/www/html/lxr2/source/$v/linux/
//其中這邊的$v就是上面有宣告的變數v,好讓使用者可以選擇版本
//這行
dbdir: /local/lxr/source/$v/
//改成
dbdir: /var/www/html/lxr2/source/$v/
//這行
glimpsebin: /local/bin/glimpse
//改成
glimpsebin: /usr/share/bin/glimpse
之後可以先將lxr.conf儲存了~
那開始來解析原始碼吧~
那我們的source都是放在/var/www/html/lxr/source/
cd /var/www/html/lxr/source/
這邊我們下載三個版本做為範例:linux-2.6.32、linux-3.4.109、linux-4.1.10
那要先把各別版本的資料夾創出來
sudo mkdir linux-2.6.32
sudo mkdir linux-3.4.109
sudo mkdir linux-4.1.10
之後進去任一個版本
cd linux-2.6.32
下載Linux kernel
sudo wget https://cdn.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.68.tar.xz
sudo tar xf linux-2.6.32.68.tar.xz
//改名sudo mv linux-2.6.32.68 linux
改名為linux的原因為lxr.conf預設為linux,也可以改名稱,但要與設定檔對得上
接下來我們要來解析原始碼先進到這個目錄
cd /var/www/html/lxr2/source/linux-2.6.32
把genxref設定為可執行檔
sudo chmod a+x ../../bin/genxref
解析原始碼
sudo ../../bin/genxref linux
跑完之後可以在資料夾下看到這兩個檔案fileidx、 xref
把fileidx的權限更改一下
sudo chmod 755 fileidx
(這個要等一些時間......然後其他版本也是這麼做~)
那剛剛有提及要去versions這個檔案讀list,那現在就來製做
剛剛是放在/source底下所以先去那
cd /var/www/html/lxr2/source/
sudo vim versions
輸入下列三行 linux-2.6.32 linux-3.4.109 linux-4.1.10 再來設定預設的值
sudo vim defversion
輸入下列一行
linux-2.6.32
設定Apache的存取權限:
在/var/www/html/lxr2/http/下面加入一個.htaccess的檔案
cd /var/www/html/lxr2/http/
sudo vim .htaccess
加入下最內容
<Files ~ (search|source|ident|diff|find)> SetHandler cgi-script Options ExecCGI </Files>
設定LXR的額外功能:
cd /var/www/html/lxr2/source/linux-2.6.32/
sudo glimpseindex -H . .
當出現Size of files being indexed = xxx B, Total #of files = xxx,就可以按ctrl+C
xxx為一組數字
之後會在資料夾下看到一些隱藏檔
.glimpse_index、.glimpse_messages、.glimpse_statistics、.glimpse_tmpi2
更改權限
sudo chmod 755 .glimpse_*
各版本的資料夾都要做一次
之後就可以進去看到了Linux Cross Reference
http://(Your IP)/lxr2/http/source
此外,如果有要調樣版的話,可以在/var/www/html/lxr2/http/底下會有三個template的檔案,裡面是可以調html樣版的。
可以參考我做的設定檔:
link