Tor
Ich versuche, einen einfachen Gerätetreiber unter Ubuntu zu schreiben. Ich möchte dies mit Eclipse (oder einer besseren IDE, die für die Treiberprogrammierung geeignet ist) tun. Hier ist der Code:
#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 );
Meine Bemühungen
Nach einigen Recherchen habe ich mich für die Entwicklung des Treibers für Eclipse CTD entschieden (obwohl ich immer noch nicht sicher bin, ob es Multithreading-Debugging-Tools unterstützt). Also ich:
- Installierte Ubuntu 11.04 Desktop x86 auf einer virtuellen VMWare-Maschine,
- Installiert
eclipse-cdtund Linux-Header-2.6.38-8 mit Synaptic Package Manager, - Erstellt einen
C ProjectbenanntenTestDriver1und kopierten Code darüber, - Der Standard-Build-Befehl wurde
makein den folgenden benutzerdefinierten Build-Befehl geändert :
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
Das Problem
Ich erhalte eine Fehlermeldung, wenn ich versuche, dieses Projekt mit Eclipse zu erstellen. Hier ist das Protokoll für den Build:
**** Build der Konfiguration Debuggen für Projekt TestDriver1 ****
make -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 all
make: Verzeichnis '/usr/src/linux-headers-2.6.38-8-generic' eingeben
make: *** Keine Regel, um
vmlinux', needed byalle zum Ziel zu machen '. Halt.make: Verlassen des Verzeichnisses '/usr/src/linux-headers-2.6.38-8-generic'
Interessanterweise erhalte ich keine Fehlermeldung, wenn ich dieses Projekt verwende, shellanstatt es eclipsezu erstellen. Zur Verwendung shellerstelle ich einfach ein MakefileContaining obj-m += TestDriver1.ound verwende den obigen makeBefehl zum Erstellen.
Also muss etwas mit der Sonnenfinsternis nicht stimmen Makefile. Vielleicht sucht es nach der vmlinuxArchitektur (?) Oder etwas, während die aktuelle Architektur x86 ist. Vielleicht liegt es an VMWare?
Wie ich verstanden habe, würde eclipsedas automatische Erstellen der Makefiles und das manuelle Ändern zu zukünftigen Fehlern führen ODER die Verwaltung makefileerschweren.
Wie kann ich dieses Projekt auf Eclipse kompilieren?
autotoolsPlugin bald überprüfen . Kennen Sie eine bessere IDE für die Treiberprogrammierung? Glaubst du, ich (ein fauler VS-Benutzer, der keine Erfahrung mit Linux hat) kann das schaffenmakefile? Ist esmakefilein großen Projekten wirklich überschaubar?