Ubuntu 安裝 GNU Global(gtags) 阅读Linux内核源码

  • Post author:
  • Post category:linux


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

, 以及各种

web

浏览器等等.


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 global
sudo 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 -j4
sudo 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'

生成 <code>HTML</code>

3.2 配置服务



GLOBAL

自带了一个

HTTP SERVER

, 可以直接使用

htags-server

启动

运行 <code>htags-server</code>

如果直接运行

htags-server

, 我发现外网无法访问我的

GLOBAL web

服务器, 看了下帮助文件, 执行以下代码 :

htags-server –b ip地址 端口号

如果不填端口号, 默认端口

8000

, 如果你要在

8080

端口打开服务, 好像要

sudo

, 否则报错, 不知何故.

访问服务

如果希望使用

Apache

服务了来访问

web

服务, 则需要在

htags

的时候添加

-D

或者

-f

选项.

生成HTML

更多帮助信息,请参考—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)



版权声明:本文为gatieme原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。