Ubuntu 安裝 GNU Global(gtags) 閱讀Linux核心源碼__Linux

來源:互聯網
上載者:User
CSDN GitHub
Ubuntu 安裝 GNU Global(gtags) 閱讀Linux核心源碼 AderXCoding/system/tools/global


本作品採用知識共用署名-非商業性使用-相同方式共用 4.0 國際許可協議進行許可, 轉載請註明出處, 謝謝合作

因本人技術水平和知識面有限, 內容如有紕漏或者需要修正的地方, 歡迎大家指正, 也歡迎大家提供一些其他好的調試工具以供收錄, 鄙人在此謝謝啦


1 Global 簡介 1.1 背景

之前介紹過很多網頁代碼閱讀工具了, 最近想看 Linux 核心代碼, 本來想搭建一個 LXR 伺服器.

Ubuntu14.04搭建LXR本機伺服器閱讀Linux核心代碼

工具之OpenGrok的搭建方法

Ubuntu環境下OpenGrok的安裝及使用

但是想到了公司內部使用的 GNU GLOBAL 搭建的伺服器. 遂百度之. 發現搭建 GLOBAL 比 LXR 簡單的多, 而且同樣功能強大, 適合個人或者小團隊閱讀代碼. 既然 LXR 這條路走不通, 那咱就換條路走走. 果斷用 GLOBAL 替代 LXR. 1.2 Global

摘要 : GNU GLOBAL 是一個原始碼標記系統, 以同樣的方式工作在不同的環境中, 如 Emacs 編輯器, Vi 編輯器, Less viewer, Bash shell, 以及各種 網頁瀏覽器等等.

GNU GLOBAL 是一個原始碼標記系統, 能夠很方面的進行代碼閱讀和代碼索引. GNU GLOBAL 以同樣的方式工作在不同的環境中, 如 Emacs 編輯器, Vi 編輯器, Less viewer, Bash shell, 以及各種 web瀏覽器等等

使用 GNU GLOBAL, 在你的原始碼中,你可以找到不同的對象並能夠很輕鬆的移動它們, 如函數、宏、結構、類等. 這對大型項目非常有用, 特別是那種包含許多子目錄, 許多 #ifdef 和很多 main( ) 函數的項目.

它類似於 ctags 或 etag, 但有兩點不同 :

獨立的編輯器

處理定義和參考的能力

GNU GLOBAL 可以運行在 UNIX (POSIX) 相容的系統, 比如GNU 和 BSD. GNU GLOBAL 支援的語言很多, 它自身支援 C, C++, Yacc, Java, PHP4 和組合語言中符號的定義和引用, 還通過 Exuberant Ctags 支援 40餘種語言的符號定義的索引.

作為 GNU 項目的一部分, GNU GLOBAL 是免費軟體, 你可以自由複製, 修改和重新發布該計划下的 GNU GPL.

Unix/Linux 使用者可以直接從倉庫進行安裝. 安裝完不需要進行其它設定.

Windows 使用者可以點擊這裡下載。

更多關於 GNU GLOBAL 的介紹請查看這裡:

https://www.gnu.org/software/global/ 2 安裝 2.1 使用內建的源安裝 global

sudo apt-get install global
2.2 編譯安裝global

Ubuntu 14.04 內建的 GLOBAL 版本是 5.7.1 但是官網都已經是 6.6. 因此如果想用最新版的 GLOBAL, 就需要自己編譯安裝. 安裝編譯依賴的庫

sudo apt build-dep globalsudo apt install libncurses5-dev libncursesw5-dev

移駕至 GNU GLOBAL 官方下載最新的 tar.gz 包並解開.

wget https://ftp.gnu.org/pub/gnu/global/global-6.6.tar.gz
編譯安裝
./configure --with-sqlite3   # gtags可以使用Sqlite3作為資料庫, 在編譯時間需要加這個參數make -j4sudo make install
3 使用 GLOBAL

假定接下來我們要產生 Linux Kernel 的解析 html
執行

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

當然也可以直接下載 linux kernel tar 包到本地後解壓縮.

進入 Linux Kernel 所在的目錄 執行 gtags 產生索引資料

#  產生tag檔案gtags –v

當然,也可以加上 --sqlite3 參數, 下面是 —help 給出的參數協助資訊.

Use Sqlite 3 API to make tag files. By default, BSD/DB 1.85 API is used.To use this option, you need to invoke configure script with--with-sqlite3 in the build phase.

tag 檔案產生後, 執行 htags 命令產生 HTML 檔案.

htags -DfFnva -m "指定main函數的名稱" -t '這裡填入你想要的首頁title'

3.2 佈建服務

GLOBAL 內建了一個 HTTP SERVER, 可以直接使用 htags-server 啟動

如果直接運行 htags-server, 我發現外網無法訪問我的 GLOBAL 網頁伺服器, 看了下協助檔案, 執行以下代碼 :

htags-server –b ip地址 連接埠號碼

如果不填連接埠號碼, 預設連接埠 8000, 如果你要在 8080連接埠開啟服務, 好像要 sudo, 否則報錯, 不知何故.

如果希望使用 Apache 服務了來訪問 web 服務, 則需要在 htags 的時候添加 -D 或者 -f 選項.

更多協助資訊,請參考—help或查閱官方文檔。
官方文檔:http://www.gnu.org/software/global/globaldoc.html 3.3 累加式更新

GLOBAL 支援累加式更新, global -u 這個命令會自動向上找到 project/GTAGS, 並更新其內容. 而 gtags 的優勢就在這裡, 累加式更新單個檔案的速度極快, 幾乎是瞬間完成.

global -vu

或者

gtags -iv

4 參考資料

GNU GLOBAL Source Code Tag System瀏覽源碼,很方便

在Emacs中使用GNU Global閱讀代碼

vim中使用GNU Global

GNU Global源碼分析工具使用筆記

介紹一下gnu global,比cscope更方便更快速的索引工具

Ubuntu 14.04 安裝最新版 gnu global (gtags)


本作品/博文 ( AderStep-紫夜闌珊-青伶巷草 Copyright ©2013-2017 ), 由 成堅(gatieme) 創作.

採用知識共用署名-非商業性使用-相同方式共用 4.0 國際許可協議進行許可. 歡迎轉載、使用、重新發布, 但務必保留文章署名成堅gatieme ( 包含連結: http://blog.csdn.net/gatieme ), 不得用於商業目的.

基於本文修改後的作品務必以相同的許可發布. 如有任何疑問,請與我聯絡.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.