2015年2月10日 星期二

現成的 Linux 核心交互參照網站



LXR 最早是用來對 Linux 核心進行交互參照,並且提供網頁介面的工具,所以名字源自「Linux Cross-Referencer」。然而現在它已經不僅僅用於 Linux 核心,而適用於任何情況。

LXR 的官方網站是 http://lxr.sourceforge.net。至於要怎麼下載安裝它,不是這篇文章要討論的,這裡要列出的,是我常使用的一些現成的 Linux 核心交叉參照網站。

  • http://lxr.linux.no/
    這是官方架設的 LXR,擁有最為豐富、詳盡的交互參照,甚至連修補版(例如 2.6.11.1)都有,簡直就是完美。然而已經掛掉很久了(真是心痛 QQ),為了避免哪天它又好了,還是先記著吧。
  • http://lxr.free-electrons.com/
    這個網站是目前更新以及搜尋速度都比較快的網站,除了幾個零碎版本,收錄約 17 個左右的最新版本(也就是說,隨著新版本的推出,舊的版本會不斷被拿掉),優點是網站執行速度很快、對於核心新的穩定版很快就會收錄、對於特定識別字(identifier)的索引較為完整;小缺陷是對於 Kconfig 檔或 .S 檔(組合語言檔)沒有做進一步的索引、對於任意文字搜尋(freetext)是利用 Google 搜尋引擎。
    註:然而,藉由修改網址中關於版本號的參數,會發現其實過往的版本並沒有被真的刪除,在我嘗試的時候,從 2.6.24 開始的版本都還是找的到的。
  • http://lxr.missinglinkelectronics.com/
    這個網站了幾個零碎版本,收錄了 2.6.38 以後的版本,Kconfig 檔或 .S 檔(組合語言檔)有做進一步的索引;小缺陷是有些時候檢索參照會有遺漏,不是完全正確、搜索的速度也比上面那個慢一點點(但是還可以接受)。此外,這個網站的更新頻率稍微慢一點,所以太過新的版本有時候會遇到還沒有收錄的情況。
  • http://lxr.cpsc.ucalgary.ca/lxr/linux/
    這個網站收錄了 2.6.11~3.9 版本的核心,索引做得很好、Kconfig 檔或 .S 檔(組合語言檔)也有做進一步的索引;缺陷是似乎沒有收錄 3.9 之後版本的打算。不過如果想找 3.9 以前的核心,它是個不錯的選擇。

以上這些 LXR 的網站都有一個缺點(對於 lxr.linux.no 沒有驗證過),就是由於 Linux 核心在 2.6.28 左右,搬移了 x86 架構下標頭檔(.h 檔)的位置,這裡是一則 LKML 的記錄,然而 LXR 並沒有意識到這點,所以當你點擊程式碼內「#include <asm/xxx.h>」時,會出現找不到的訊息。
參照失敗的例子(點選之前)
參照失敗的例子(點選之後)

實際上檔案應該在這裡
題外話

在查詢資料的時候,偶然間查到了一個網站——http://lxr.devzen.net/source/xref/,它所使用的工具不是 LXR,而是「{OpenGrok

這個網站收錄了部分自 2014 年 6 月後發佈的核心與修補版本,此外,它還收錄許多其它工具的原始碼交叉參照,特別是 GRUB,有助於對 Linux 運作的認識。

1 則留言 :