开发环境:
ubuntu12.04(64位)
eclipse (c/c++)luna
注意:本文主要讲将eclipse配置好编译器。 远程调试的部分请看另一篇帖子 eclipse 调试环境配置。
我的arm-linux-gcc 路径是:/opt/EmbedSky/4.3.3/bin/arm-linux-gcc (什么?怎么看arm-linux-gcc的路径?? 你可以使用 which arm-linux-gcc 来察看)
我的linux 内核路径是:/opt/EmbedSky/linux-2.6.30.4
step1:
安装eclipse以及jdk的配置、交叉编译器的配置,这部分请看eclipse(c/c++)luna安装。
step2:
0、这一步假设你已经能正常打开eclipse arm-linux-gcc已经配置好。
1、打开eclipse,最好将工作空间设为nfs,以便你的板子挂载它。(nfs配置方法请看这个nfs挂载方法)。
打开后如图所示:
我已经建了个工程。你第一次打开肯定不是这样的。
2、新建一个工程: file->new->c project. 如图:
3、输入工程名称。
选择 Empty Project cross GCC。 finish就可以,具体配置我们等会再来配置。
step3:
下面让我们配置一番。
0、主要包括:取消makefile自动生成,配置编译器arm-linux-gcc,配置路径和符号。
1、取消eclipse自动生成 makefile :将General Makefile automatically的对勾去掉。 ok
3、配置编译环境:
在左侧项目栏右击项目名称 ->选择properties,在c/c++build-->setting里,把toolsetting中的command都改成arm-linux-gcc,arm-linux-gcc和arm-linux-as一共改这三个。
4、配置路径和符号:
选择 gun C ,点击右侧add 添arm-linux-gcc的一些头文件:
我的是:
/opt/EmbedSky/4.3.3/lib/gcc/arm-none-linux-gnueabi/4.3.3/include
/opt/EmbedSky/4.3.3/lib/gcc/arm-none-linux-gnueabi/4.3.3/include-fixed
/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/include
/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/include
添加的时候别忘了选择(打钩):add to all configurations。
我们保存下配置: 点击下面的 export setting。 格式是xml文件,名字随便,位置随便,它是一个非常随便的文件 哈哈。
配置还没结束,这样的配置显然是不够的,我们干脆在xml文件中配置好了。
5、打开你保存的xml文件,我们来编辑他。用gedit打开就行。
在第一个
<language name="C Source File">
</language>
之间添入内核树的头文件的路径(include路径)。我的是:
<includepath>/opt/EmbedSky/linux-2.6.30.4/include</includepath>
<includepath>/opt/EmbedSky/linux-2.6.30.4/arch/arm/include</includepath>
<includepath>/opt/EmbedSky/linux-2.6.30.4/arch/arm/plat-s3c24xx/include</includepath>
注意格式。欲知详情,请学习 xml。这样内核树路径的问题就解决了,这里我想顺便提醒一句,你的内核编译过吗? 没编译过是不行的,编译驱动程序的时候会提示一个文件打死都找不到,赶紧make一遍吧!
6、找到 autoconf.h 我们需要这里面的宏定义,将这些宏放在symbols里面。具体做法:
我的autoconf.h文件在 /opt/EmbedSky/linux-2.6.30.4/include/linux 目录下。如果咱俩的版本不一样 请自己grep一下。
进到这个目录下,然后执行一下命令:
cat autoconf.h |grep define |awk '{print "<macro><name>" $2 "</name><value>" $3 "</value></macro>"}' > symbol.xml
这个命令的作用是将autoconf.h 文件里的宏 全部存放到 symbol.xml这个文件中。没成功??不可能吧,使用sudo试试
打开这个symbol.xml文件,复制文件中所有的文字 粘贴到 我们刚才从eclipse导出来的配置文件中(也是xml文件)。粘贴到的位置是:
第二个
<language name="C Source File">
</language>
的中间。
并在<language name="C Source File"> 下面手动加一条:
<macro><name>__KERNEL__</name><value>1</value></macro>
预览一下吧:
step5:
好了,配置文件总算弄完了,保存一下。 我们再打开eclipse的 gun c的那个配置界面,点击import setting按钮,将这个xml文件导进来。以后我们再建工程时直接导入这个配置文件就好了。
linux 驱动开发IDE就这样的打造好了。 写个教程不容易,转载请标注出处。http://blog.csdn.net/tianzhihen_wq
简单实验一下。 导入一个 .c文件和makefile
给你个例子:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
ARCH=arm
CROSS_COMPILE=arm-linux-gcc
obj-m := hello.o
KDIR :=/opt/EmbedSky/linux-2.6.30.4
PWD :=$(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
makefile需要根据你linux内核位置选择一下。 还有一点,由于我们是使用自己的makefile,编译的时候eclipse默认从工程目录下的Debug目录编译,这个位置可以从eclipse的
pwd 路径 选择,如图:
好多配置,我相信过5天后让我从头开始配置的时候肯定又忘了。。。所以转一份我的博文吧,转载请标注出处。http://blog.csdn.net/tianzhihen_wq
这写都配置完了,build一下吧,看看debug目录下有没有 .ko文件。 祝你成功!。