Цель
Я пытаюсь написать простой драйвер устройства на 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 для разработки драйвера (хотя я все еще не уверен, поддерживает ли он многопоточные инструменты отладки). Так что я:
- Установил Ubuntu 11.04 desktop x86 на виртуальную машину VMWare,
- Установил
eclipse-cdt
и linux-headers-2.6.38-8 с помощью Synaptic Package Manager, - Создал
C Project
именованныйTestDriver1
и скопированный выше код в него, - Изменена команда сборки по умолчанию
make
на следующую настраиваемую команду сборки:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
Проблема
Я получаю сообщение об ошибке при попытке построить этот проект с использованием Eclipse. Вот журнал для сборки:
**** Сборка конфигурации Debug для проекта TestDriver1 ****
make -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 all
make: вход в каталог '/usr/src/linux-headers-2.6.38-8-generic'
make: *** Нет правила, чтобы сделать цель
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
автоматическое создание make-файлов и их изменение вручную может привести к ошибкам в будущем ИЛИ усложнить управление makefile
.
Итак, как я могу скомпилировать этот проект на Eclipse?
autotools
плагин. Знаете ли вы лучше IDE для программирования драйверов? Как вы думаете, я (ленивый пользователь VS, не имеющий опыта в Linux), могу управлятьmakefile
? Действительно лиmakefile
это возможно в больших проектах?