一、下载并编译Linux内核
如果要选择其他版本: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章 构建分析环境
|