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-cdt
und Linux-Header-2.6.38-8 mit Synaptic Package Manager, - Erstellt einen
C Project
benanntenTestDriver1
und kopierten Code darüber, - Der Standard-Build-Befehl wurde
make
in 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 by
alle 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, shell
anstatt es eclipse
zu erstellen. Zur Verwendung shell
erstelle ich einfach ein Makefile
Containing obj-m += TestDriver1.o
und verwende den obigen make
Befehl zum Erstellen.
Also muss etwas mit der Sonnenfinsternis nicht stimmen Makefile
. Vielleicht sucht es nach der vmlinux
Architektur (?) Oder etwas, während die aktuelle Architektur x86 ist. Vielleicht liegt es an VMWare?
Wie ich verstanden habe, würde eclipse
das automatische Erstellen der Makefiles und das manuelle Ändern zu zukünftigen Fehlern führen ODER die Verwaltung makefile
erschweren.
Wie kann ich dieses Projekt auf Eclipse kompilieren?
autotools
Plugin 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 esmakefile
in großen Projekten wirklich überschaubar?