Цель
Я пытаюсь написать простой драйвер устройства на 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это возможно в больших проектах?