在Ubuntu下使用eclipse搭建Linux内核开发环境

系统环境

1
2
3
4
5
$ cat /etc/issue
Ubuntu 16.04.2 LTS \n \l
$ uname -a
Linux satsuma-pc 4.4.0-62-generic #83-Ubuntu SMP
Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

安装eclipse

有多种方式安装eclipse:

  1. sudo apt-get install eclipse
  2. 利用ubuntu-make安装
  3. 官网下载安装最新版本。

这里第一种方法安装的eclipse是老版本,3.8.1,不推荐。

第二种方法里ubuntu-make是为开发人员提供快速安装各种开发环境的命令行工具。在github上有维护,地址在这里。安装步骤可以参考github指南。这里需要注意的是最好添加ppa源,以获取最新版本,否则后续安装IDE可能会出错。

1
$ sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make

第三种官网下载,解压后运行即可安装

1
./eclipse-inst

本文最终使用第三种方法,这里安装的版本是Neon.2 Release (4.6.2)。

在菜单栏help里应该有 Eclipse Marketplace,然后搜索link+
进行安装,这里一路合理选择即可安装成功该插件。
link+ install

阅读linux 内核源码

1 新建link+项目

new kernel project

2 导入linux内核源码,这里采用tar文件导入,点击完成。

import kernel src

3 这里为先前按照同样步骤导入的源码项目linux_kernel_3_19。接下来进行indexer操作,首先设置项目属性(alt+enter),里的indexer。

indexer

4 然后项目右键index,选择Freshen All Files。然后会对整个项目进行建立索引,这样就能对源码进行导航解析,快速跳转。该过程比较好耗cpu和磁盘读写,需要十几分钟。至此阅读内核源码的IDE基本完成。

编写内核模块

1 新建内核模块项目,这里选择编译用的内核头文件位置,然后一路next,点击完成。

device module

2 删除项目下KERN_SRC文件夹里生成的源码文件。然后import文件系统,把我们的代码文件导入进去,覆盖原来的文件。

project contents

3 为了实现对源码编译,这里可以发现项目下Build Targets,右键可以构建新的target命令,这需要和Makefile文件里的target相对应。
如下为Makefile文件内容,则可以构建新的目标all。这样编译可以直接点击项目下的all运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
obj-m := tyz_memfs.o
tyz_memfs-y := main.o macroflow.o rl.o
KERNEL := /lib/modules/`uname -r`/build #for mintubuntu
#KERNEL := /lib/modules/`uname -r`/source #for redhat
all:
make -C $(KERNEL) M=`pwd` modules
install:
make -C $(KERNEL) M=`pwd` modules_install
depmod -A
clean:
make -C $(KERNEL) M=`pwd` clean

4 对于代码跳转,可以对项目右键index,同上述内核源码建立索引一样。

5 此时linux源码项目和内核模块项目在一个workspace下。

图解

6 这时通过[ctrl + G]按键,即可找出在该workspace下的项目,包括上述的linux源码的代码,这样可以方便来回跳转源码。跳回原来代码默认快捷键为[alt + left_arrow]。

跳转

其它

在index内核源码时候,可以选择部分index,或者利用过滤机制加入感兴趣的代码模块,这里可以自行google。

参考文献

ubuntu-make | Ubuntu Linux一键安装开发环境