Cel
Próbuję napisać prosty sterownik urządzenia na Ubuntu. Chcę to zrobić za pomocą Eclipse (lub lepszego IDE odpowiedniego do programowania sterowników). Oto kod:
#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 );
Mój wysiłek
Po kilku badaniach zdecydowałem się użyć Eclipse CTD do opracowania sterownika (chociaż nadal nie jestem pewien, czy obsługuje narzędzia do debugowania wielowątkowego). Więc ja:
- Zainstalowałem Ubuntu 11.04 desktop x86 na maszynie wirtualnej VMWare,
- Zainstalowano
eclipse-cdti linux-headers-2.6.38-8 za pomocą Synaptic Package Manager, - Utworzono do niego
C ProjectnazwanyTestDriver1i wklejony powyżej powyższy kod, - Zmieniono domyślne polecenie kompilacji
makena następujące niestandardowe polecenie kompilacji:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
Problem
Podczas próby zbudowania tego projektu przy użyciu środowiska Eclipse pojawia się błąd. Oto dziennik kompilacji:
**** Kompilacja konfiguracji Debugowanie dla projektu TestDriver1 ****
make -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 wszystkie
make: Wpis do katalogu „/usr/src/linux-headers-2.6.38-8-generic”
make: *** Brak reguły, aby cel był
vmlinux', needed bywszystkim ”. Zatrzymać.make: Wyjście z katalogu „/usr/src/linux-headers-2.6.38-8-generic”
Co ciekawe, nie otrzymuję błędu, gdy używam shellzamiast eclipsebudować ten projekt. Aby użyć shell, po prostu utworzę Makefilezawierające obj-m += TestDriver1.oi użyj powyższego makepolecenia, aby zbudować.
Coś musi być nie tak z zaćmieniem Makefile. Może szuka vmlinuxarchitektury (?) Lub czegoś, podczas gdy obecna architektura to x86. Może to z powodu VMWare?
Jak zrozumiałem, eclipseautomatyczne tworzenie plików makefile i modyfikowanie ich ręcznie spowoduje błędy w przyszłości LUB utrudni zarządzanie makefile.
Jak mogę skompilować ten projekt zaćmieniem?
autotoolsWkrótce sprawdzę wtyczkę. Czy znasz jakieś lepsze IDE do programowania sterowników? Czy myślisz, że ja (leniwy użytkownik VS, który nie ma doświadczenia w Linuksie) mogę zarządzaćmakefile? Czymakefilenaprawdę można sobie poradzić w dużych projektach?