搭建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
在这里插入图片描述
搭建Linux内核阅读环境(ctags + cscope + vim(插件:Source Explorer + NERD Tree + Tag List))_第1张图片

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

三、vim插件下载

1、所需的插件

  • Source Explorer
  • NERD Tree
  • Tag List

2、下载流程

  • vim官网
  • 点击Scripts --> Browse all
    搭建Linux内核阅读环境(ctags + cscope + vim(插件:Source Explorer + NERD Tree + Tag List))_第2张图片
    搭建Linux内核阅读环境(ctags + cscope + vim(插件:Source Explorer + NERD Tree + Tag List))_第3张图片
    温馨提示:往下找,资源在下面
    搭建Linux内核阅读环境(ctags + cscope + vim(插件:Source Explorer + NERD Tree + Tag List))_第4张图片

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

  • SrcExpl-6.0.zip
  • NERD_tree.zip 5.0.0
  • taglist_46.zip 4.6
    搭建Linux内核阅读环境(ctags + cscope + vim(插件:Source Explorer + NERD Tree + Tag List))_第5张图片
  • 解压缩后,自动放到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  :TlistToggle
    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  :SrcExplToggle
    nmap  h
    nmap  j
    nmap  k
    nmap  l

    let g:SrcExpl_WinHeight = 8
    let g:SrcExpl_refreshTime = 100
    let g:SrcExpl_jumpKey = ""
    let g:SrcExpl_gobackKey = ""
    let g:SrcExpl_isUpdateTags = 0

"----------------------------------------------------------"
" NERD Tree 环境设置
"----------------------------------------------------------"
    let NERDTreeWinPos = "left"
    nmap  :NERDTreeToggle

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

  • 在内核源码所在目录下,执行vim
    在这里插入图片描述
    搭建Linux内核阅读环境(ctags + cscope + vim(插件:Source Explorer + NERD Tree + Tag List))_第6张图片

五、参考资料

  • 《ARM Linux内核源码剖析》第4章 构建分析环境

你可能感兴趣的:(搭建环境,Linux,linux,vim)