LinK+, 一款Linux内核开发IDE
前言
LinK+ 是一款在linux下基于eclipse开发的免费的Linux内核以及驱动开发软件.
这个软件在国外知名度也不高. 国内更是没人介绍过这一款软件.
软件的现状是: 开发者似乎已经停止更新, 设想中支持的ARM架构也没有下文. 因此不支持嵌入式的仿真.
我主要用它来查看内核源码, 开发驱动, 能快速的搭建好驱动架构, 支持内核函数跳转查看! 自动生成Makefile.
网址如下: Linux Kernel Programming IDE (LinK+)
安装
根据用户手册, 有多种安装方法. 使用最简单的 LinK+IDE方式.
下载 32bit, 因为我用的是32位的Ubuntu.
说明一下 LinK+ UserManual 里面的 -
横杠都是错误的, 终端无法识别!
然后按照说明安装如下依赖的软件.
# 安装最新版 openjdk, 向下兼容jdk6即可. |
然后, LinK+IDE 的升级和插件不用看了. 很久没更新过了.
Kernel源码的编译和阅读
先确定linux内核源码可以在终端下成功编译.
新建Makefile工程
选择源码路径, 工具链使用Makefile自己的, 所以选<none>
选中项目, 然后在菜单里取消自动编译, 最后选择项目属性
设定编译指令, make
即可
设定指令目标. 内核使用 uImage
, 驱动使用 make modules
如果需要设置更多的指令目标, 用如下方式. Create是设置, Build是执行
设置自定义目标
好了, 如果这样直接 Make Targets
->Build...
->uImage
, 会编译失败.
原因是Eclipse下面无法正确识别Makefile下面的CROSS_COMPILE路径.
见 Ubuntu下基于Eclipse去调用Makefile交叉编译Uboot
需要将其改为绝对路径. 打开内核源码根目录下的 Makefile
, 187行, 修改如下:
# CROSS_COMPILE ?= arm-linux- |
再次在eclipse下尝试编译, 就成功了. 看Console的输出, 获得uImage文件
Kernel: arch/arm/boot/Image is ready |
但Ecilpse依旧会显示很多警告和错误. 原因不明, 查的如下资料:
先忽略这些错误警告, 但此时, 有些函数依旧不能正常跳转. 原因是 .\include\linux\autoconf.h
没有被其它头文件包含, 里面的宏定义linux源码无法识别. 解决办法是我们自己把这些宏定义加入eclipse的SYMBOLS. 手工一个个加入不现实, 我写了一个python代码, 把linux下的config自动转为eclipse可识别的XML格式:
下载config2xml
将这个文件放在linux源码根目录下, 配置好.config
文件. 然后在终端运行它
# pwd = linux内核源码根目录 |
成功后, 会在上层目录生成 eclipse_SYMBOLS.xml
这么一个文件.
然后回到eclipse里面, 将其导入. 如图:
另外, 为方便跳转, 可以在eclipse下面把linux源码下不相关的平台代码排除掉.
最后, 需要把项目的index索引重建一下才能正确跳转. 重建耗时较长.
至此内核源码的C语言部分已经能成功的跳转查看了.汇编部分可以用eclipse的搜索功能.
写驱动
需要先在工程里加载好Kernel源码!
然后参考 驱动之基于LinK+设计按键驱动
大致步骤如下:
- LinK+IDE里, 新建工程->Linux Kernel Development(LinK+)
- 选择 Device Driver Project
- 写好驱动名称, 驱动路径, 作者, 开源证书类型
- Kernel Version 要去掉
Use Host Machine Kernel
, 选择我们已经编译好的嵌入式内核源码路径 - X86架构 (ARM不支持),
- 下面两步可以根据需求自己选择驱动框架, LinK+会自动生成有框架的.c和.h以及Makefile文件.
- 驱动下面, 所有的跳转都可用, 可以非常方便的查看函数和宏定义.
- 可以使用eclipse去编译, 设置一个
modules
目标就可以了.
Eclipse交叉编译说明
这个方法的核心是不用Eclipse自己的编译工具链. 所有的编译工具都由Makefile内指定了.
所以, 这个也适用于编译查看u-boot源码.
如果是应用层代码, 那么就需要自己写Makefile指定编译工具了.
另外一个方法是, 另外下载一个 Eclipse IDE for C/C++
, 单独为应用层代码配置一个环境.
可参考:
- Linux下搭建树莓派交叉编译环境
- Linux + Eclipse 配置交叉编译环境
- 配置eclipse linux嵌入式 集成开发环境(编译部分)详细
- eclipse在windows下的arm交叉编译环境搭建
原创于 DRA&PHO