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 搭建的服务器. 遂百度之. 发现搭建 GLOBALLXR 简单的多, 而且同样功能强大, 适合个人或者小团队阅读代码. 既然 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( ) 函数的项目.

它类似于 ctagsetag, 但有两点不同 :

  • 独立的编辑器

  • 处理定义和参考的能力

GNU GLOBAL 可以运行在 UNIX (POSIX) 兼容的系统, 比如GNUBSD. 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'

3.2 配置服务


GLOBAL 自带了一个 HTTP SERVER, 可以直接使用 htags-server 启动

如果直接运行 htags-server, 我发现外网无法访问我的 GLOBAL web 服务器, 看了下帮助文件, 执行以下代码 :

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 ), 不得用于商业目的.

  • 基于本文修改后的作品务必以相同的许可发布. 如有任何疑问,请与我联系.

Ubuntu 安裝 GNU Global(gtags) 阅读Linux内核源码相关推荐

  1. 最小的linux内核代码,带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统...

    要学习linux内核,先要能够编译内核,还需要了解内核如何启动根文件系统.这样你才能在修改linux内核代码之后,完成验证的过程. 本文教你完成下列过程: 1.下载linux并编译linux内核源码 ...

  2. Ubuntu 22.04.1 配置 LXR 阅读Linux kernel源码

    配置环境 首先更新一下 $ sudo apt-get update 根据lxr的官方文档, 我们需要准备Perl,ctags $ sudo apt-get install perl universal ...

  3. 阅读 Linux 内核源码——共享内存

    介绍 我看的是linux-4.2.3的源码.参考了<边干边学--Linux内核指导>(鬼畜的书名)第16章内容,他们用的是2.6.15的内核源码. 现在linux中可以使用共享内存的方式有 ...

  4. Linux账户标识R=400是什么意思_带你阅读linux内核源码:通俗讲解编译器、交叉编译器和大小端...

    欢迎关注"技术简说",持续分享linux内核和驱动开发干货. 本文内容包括: 编译器和交叉编译器的介绍 交叉编译器的命名规则 如何交叉编译C代码 大端.小端的通俗讲解 如何判断你的 ...

  5. 【Linux 内核】Linux 内核源码目录说明 ① ( arch 目录 | block 目录 | certs 目录 | crypto 目录 | Documentation 目录 )

    文章目录 一.arch 目录 二.block 目录 三.certs 目录 四.crypto 目录 五.Documentation 目录 在上一篇博客 [Linux 内核]Linux 内核源码结构 ( ...

  6. 【转载】ubuntu下linux内核源码阅读工具和调试方法总结

    http://blog.chinaunix.net/space.php?uid=20940095&do=blog&cuid=2377369 一 linux内核源码阅读工具 window ...

  7. Linux内核源码阅读以及工具详解

    接上篇Linux内核源码下载方法 这篇总结了如何利用source insight对Linux内核代码进行阅读和学习(资料来源于网络) 随着linux的逐步普及,现在有不少人对于Linux的安装及设置已 ...

  8. ubuntu下wget下载Linux内核源码、make生成.config文件

    根据资料,如果要调试Linux内核源码,需要自己编译内核源码:原因是,一般下载的内核并不是为调试而编译的,要在编译时开启 "Compile the kernel with debug inf ...

  9. Linux内核源码阅读以及工具(转)

    Linux内核源码阅读以及工具(转) 转载地址:Linux内核源码阅读以及工具(转)

最新文章

  1. 2022-2028年中国复合软管行业市场行情动态及发展趋向分析报告
  2. 这是入门生信,学习生信分析思路和数据可视化的首选?
  3. 调查:Android的领先地位稳固
  4. 微软将降低Visual Studio对操作系统的影响
  5. CometOJ-[Contest #10]鱼跃龙门【exgcd】
  6. shell 多个引号冲突_Html多个引号重叠使用冲突解决办法
  7. python知识点查阅
  8. 【精华版】cw2vec理论及其实现
  9. mysql查询4-6_MySQL学习(四)查询
  10. 企业架构皇冠上的明珠:TOGAF
  11. 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例)
  12. 【探路者】10月13日立会报告(团队第1周-第1次)
  13. 【推荐系统】Criteo数据集介绍
  14. 黑马程序员--技术网站网址2
  15. 网络营销---春节营销案例
  16. 读书寄语:感谢揭露你过失的人
  17. NFT为实体经济赋能
  18. ajax请求后新窗口打开,Ajax请求成功后打开新窗口地址
  19. Windows 10下安装Elementary OS双系统
  20. 普中科技手把手教你学ESP32--基于MicroPython-01

热门文章

  1. 用python计算准确率_机器学习之分类:准确率
  2. 京东毁约2019校招应届生:「面试官的嘴,骗人的鬼?」
  3. 解决Mac系统启动台图标顺序混乱的问题
  4. c语言中staloc是什么意思,C语言函数调用栈(三)
  5. web图书管理系统(HTML+CSS+JS+PHP)
  6. 循环神经网络(三)(常用循环神经网络,LSTM、GRU,文本生成)
  7. 薄膜涂层厚度在线测量仪|检测实时高效率
  8. 进一步理解抽象工厂模式——开闭原则
  9. linux以太网连接树莓派,树莓派 Zero USB/以太网方式连接配置教程,树莓zero
  10. 趣味密码学之一:从福尔摩斯的小人说起