IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 搭建Linux内核阅读环境(ctags + cscope + vim(插件:Source Explorer + NERD Tree + Tag List)) -> 正文阅读

[开发工具]搭建Linux内核阅读环境(ctags + cscope + vim(插件:Source Explorer + NERD Tree + Tag List))

一、下载并编译Linux内核

1、linux-4.13.16.tar.gz

如果要选择其他版本:linux内核主页–> 点击 https://www.kernel.org/pub/–>linux/–>kernel/
注意:由于ubuntu自身版本、gcc等编译工具链较新等原因,编译较早的linux内核会失败。

2、传到服务器上,并解压

tar xvzf linux-4.13.16.tar.gz
在这里插入图片描述

二、安装ctags + cscope

1、安装ctags

sudo apt-get install ctags
在这里插入图片描述

2、tags.sh (内核源码提供的用于生成各种指令集架构的ctags标签的脚本)

我目前需要x86架构的,32位和64位的都需要。
在这里插入图片描述

  • 只要x86架构的,如果服务器是32位的,那就是IA32。我使用的服务器是x86_64。(uname -a查看)

由于服务器是64位的,要想有32位的话,需要在虚拟机上做了…
PS:我实际使用后发现,只要是x86架构,看64位的和32位的都很方便。

3、编译:make tags ARCH=x86

在这里插入图片描述

-j 8 : 8个线程,并发编译。

在这里插入图片描述

ls -h : 更方便阅读的方式显示文件大小
如果某个文件的大小大于或者接近于 1GB,那么就会以GB为单位显示。如果文件接近 MB,则会按照MB为单位显示,以此类推。
(-l : 以列表的方式显示;-a : 显示所有文件及目录,. 开头的隐藏文件也会列出)

4、解读tags文件

  • tags文件的结构
    tags_name file_name ex_cmd; extension_fields
  • tags_name : 符号名
    file_name : 符号所在的文件名
    ex_cmd : 在文件中查找符号时,使用vim的ex模式。在此模式中搜索范式的正则表达式
    extension_fields : 符号类型f =普通C函数,c = 类, d = 已定义的值
    在这里插入图片描述
    2;" :没看懂…

5、安装cscope

sudo apt-get install cscope
在这里插入图片描述

6、构建x86的cscope数据库

make cscope ARCH=x86 -j 8
在这里插入图片描述
在这里插入图片描述

文件说明,见《ARM Linux内核源码剖析》P33

三、vim插件下载

1、所需的插件

  • Source Explorer
  • NERD Tree
  • Tag List

2、下载流程

  • vim官网
  • 点击Scripts --> Browse all
    在这里插入图片描述
    在这里插入图片描述
    温馨提示:往下找,资源在下面
    在这里插入图片描述

其他同理,下载好放入服务器。

  • SrcExpl-6.0.zip
  • NERD_tree.zip 5.0.0
  • taglist_46.zip 4.6
    在这里插入图片描述
  • 解压缩后,自动放到plugin目录下
    在这里插入图片描述
    在这里插入图片描述

3、vim环境设置 (修改.vimrc)

  • 配置前,需要知道以下信息:
    (1)tags的路径:/ssd/xm/linuxKernel/linux-4.13.16/tags

相当于配置ctags database path

(2)cscope的路径:/usr/bin/cscope
在这里插入图片描述
(3)cscope.out的路径:/ssd/xm/linuxKernel/linux-4.13.16/cscope.out

  • 先按照书上的默认配置,倒腾倒腾。
"---------------------------------------------------------"
" vim环境设置
"---------------------------------------------------------"
    set nu           " nu是number的缩写,显示行号
    set ai           " ai是autoindent的缩写,下一行的缩进和上一行保持一致。
    set ts=4         " ts=tabstop, tabstop = 4,表示tab键占4个空格

"---------------------------------------------------------"
" ctags database path设置
"---------------------------------------------------------"
    set tags=/ssd/xm/linuxKernel/linux-4.13.16/tags


"---------------------------------------------------------"
" cscope database path设置
"---------------------------------------------------------"
    set csprg=/usr/bin/cscope
    set csto=0         " cscope DB search first
    set cst            " cscope DB tag DB search
    set nocsverb       " verbose off

    cs add /ssd/xm/linuxKernel/linux-4.13.16/cscope.out /ssd/xm/linuxKernel/linux-4.13.16
    
"---------------------------------------------------------"
" Tap List 环境设置
"---------------------------------------------------------"
    filetype on
    nmap <F7> :TlistToggle<CR>
    let Tlist_Ctags_Cmd = "/usr/bin/ctags"
    let Tlist_Inc_Winwidth = 0
    let Tlist_Exit_OnlyWindow = 0
   
   let Tlist_Auto_Open = 0
   let Tlist_Use_Right_Window = 1

"---------------------------------------------------------"
" Source Explorer 环境设置
"---------------------------------------------------------"
    nmap <F8> :SrcExplToggle<CR>
    nmap <C-H> <C-W>h
    nmap <C-J> <C-W>j
    nmap <C-K> <C-W>k
    nmap <C-L> <C-W>l

    let g:SrcExpl_WinHeight = 8
    let g:SrcExpl_refreshTime = 100
    let g:SrcExpl_jumpKey = "<ENTER>"
    let g:SrcExpl_gobackKey = "<SPACE>"
    let g:SrcExpl_isUpdateTags = 0

"----------------------------------------------------------"
" NERD Tree 环境设置
"----------------------------------------------------------"
    let NERDTreeWinPos = "left"
    nmap <F9> :NERDTreeToggle<CR>

四、成品:Linux内核阅读环境

  • 在内核源码所在目录下,执行vim
    在这里插入图片描述
    在这里插入图片描述

五、参考资料

  • 《ARM Linux内核源码剖析》第4章 构建分析环境
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:55:18  更:2022-10-17 12:58:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:36:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码