| 一、下载并编译Linux内核 
 如果要选择其他版本:linux内核主页–> 点击 https://www.kernel.org/pub/–>linux/–>kernel/注意:由于ubuntu自身版本、gcc等编译工具链较新等原因,编译较早的linux内核会失败。
 2、传到服务器上,并解压tar xvzf linux-4.13.16.tar.gz
 
 二、安装ctags + cscope1、安装ctagssudo 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、安装cscopesudo apt-get install cscope
 
 6、构建x86的cscope数据库 make cscope ARCH=x86 -j 8
  
 
  
 文件说明,见《ARM Linux内核源码剖析》P33 三、vim插件下载1、所需的插件Source ExplorerNERD TreeTag List
 2、下载流程vim官网点击Scripts --> Browse all
  
  温馨提示:往下找,资源在下面
 
 
  
 其他同理,下载好放入服务器。 SrcExpl-6.0.zipNERD_tree.zip 5.0.0taglist_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章 构建分析环境
 |