搭建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章 构建分析环境
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值