Мета
Я намагаюся написати простий драйвер пристрою на 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 настільний x86 на віртуальній машині VMWare,
- Встановлено
eclipse-cdt
та linux-заголовки-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. Ось журнал збірки:
**** Створення конфігурації Налагодження для проекту TestDriver1 ****
make -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / робоча область / TestDriver1 все
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
створення файлів автоматично, а їх зміна вручну може спричинити помилки в майбутньому АБО ускладнити управління makefile
.
Отже, як я можу скласти цей проект на затемнення?
autotools
плагін. Чи знаєте ви якісь кращі IDE для програмування драйверів? Як ви думаєте, я (ледачий користувач VS, який не має досвіду роботи з Linux), можу керуватиmakefile
? Чиmakefile
справді керований у великих проектах?