目标
我正在尝试在Ubuntu上编写一个简单的设备驱动程序。我想使用Eclipse(或适用于驱动程序编程的更好的IDE)来执行此操作。这是代码:
#include <linux/module.h>
static int __init hello_world( void )
{
printk( "hello world!\n" );
return 0;
}
static void __exit goodbye_world( void )
{
printk( "goodbye world!\n" );
}
module_init( hello_world );
module_exit( goodbye_world );
我的努力
经过研究,我决定使用Eclipse CTD来开发驱动程序(尽管我仍然不确定它是否支持多线程调试工具)。所以我:
- 在VMWare虚拟机上安装了Ubuntu 11.04桌面x86,
- 使用Synaptic软件包管理器安装
eclipse-cdt
和linux-headers-2.6.38-8, - 在上面创建一个
C Project
命名TestDriver1
并复制粘贴的代码, - 将默认的构建命令更改为
make
以下定制的构建命令:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
问题
当我尝试使用Eclipse构建该项目时出现错误。这是构建的日志:
****为项目TestDriver1构建配置调试****
使-C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1全部
make:输入目录'/usr/src/linux-headers-2.6.38-8-generic'
使:***没有规则使
vmlinux', needed by
所有目标。停止。make:离开目录'/usr/src/linux-headers-2.6.38-8-generic'
有趣的是,当我使用shell
而不是eclipse
构建这个项目时,我没有任何错误。要使用shell
,我只创建一个Makefile
包含obj-m += TestDriver1.o
并使用上面的make
命令进行构建。
因此,日食一定有问题Makefile
。也许它正在寻找vmlinux
架构(?)或当前架构为x86的东西。也许是因为VMWare?
据我了解,eclipse
自动创建makefile文件并手动对其进行修改会在将来导致错误,或者使管理makefile
变得困难。
那么,如何在Eclipse上编译该项目?
autotools
尽快检查插件。您知道用于驱动程序编程的更好的IDE吗?您认为我(没有linux经验的懒惰VS用户)可以管理makefile
吗?makefile
在大型项目中s 是否真的可以管理?