Isa*_*aac 9 build makefile eclipse-cdt drivers
我正在尝试在 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 );
Run Code Online (Sandbox Code Playgroud)
经过一番研究,我决定使用Eclipse CTD来开发驱动程序(虽然我仍然不确定它是否支持多线程调试工具)。所以我:
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 构建配置调试 ****
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1 all
制作:进入目录'/usr/src/linux-headers-2.6.38-8-generic'
make: *** 没有规则可以使目标
vmlinux', needed by全部'。停止。制作:离开目录'/usr/src/linux-headers-2.6.38-8-generic'
有趣的是,当我使用shell而不是eclipse构建这个项目时,我没有得到任何错误。要使用shell,我只需创建一个Makefile包含obj-m += TestDriver1.o并使用上面的make命令来构建。
所以, eclipse 一定有问题Makefile。也许它正在寻找vmlinux架构(?)或其他东西,而当前架构是 x86。也许是因为VMWare?
据我了解,eclipse自动创建 makefile 并手动修改它会在将来导致错误或使管理makefile变得困难。
那么,如何在 eclipse 上编译这个项目呢?
我和你的情况几乎一样。按照这个指令,我已经成功地构建了内核本身和单个模块。
我在主要文章中添加了三个步骤(40~42),使 Eclipse 编译特定的驱动程序,而不是整个内核。
CONFIG_*和生成autoconf.h. 这可以在下载和安装 Eclipse 之前或之后完成。File-> New->C Projectmy_kernelLinux GCCAdvanced settings... 会弹出一个属性对话框。ISO-8859-1在框中,然后单击 ApplyC/C++ General左侧的选择。Preprocessor Include PathsGNU C在语言列表中选择CDT User Setting Entries在设置条目列表中选择Add.... 从左上角的下拉菜单中选择 Preprocessor Macros File,从右上角的下拉菜单中选择 Project Path,然后进入include/generated/autoconf.hFile 文本框。(注意:对于较旧的内核 [pre-2.6.36?],位置autoconf.h是include/linux/autoconf.h)GNU CAdd...Workspace... 然后选择内核的包含目录arch/architecture/include,例如,arch/powerpc/include# Symbols选项卡Add...__KERNEL__1并单击确定C/C++ build -> Behaviour (tab)Build (Incremental buil)复选框并将您的模块路径添加到文本框(在我的情况下M=drivers/servo/dynamixel)。M=..为all.| 归档时间: |
|
| 查看次数: |
18328 次 |
| 最近记录: |