Obbiettivo
Sto cercando di scrivere un semplice driver di dispositivo su Ubuntu. Voglio farlo usando Eclipse (o un IDE migliore adatto alla programmazione del driver). Ecco il codice:
#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 );
Il mio sforzo
Dopo alcune ricerche, ho deciso di utilizzare Eclipse CTD per sviluppare il driver (mentre non sono ancora sicuro che supporti gli strumenti di debug multi-threading). Così io:
- Ubuntu 11.04 desktop x86 installato su una macchina virtuale VMWare,
- Installato
eclipse-cdt
e linux-headers-2.6.38-8 usando Synaptic Package Manager, - Creato un codice sopra
C Project
indicato conTestDriver1
copia e incolla, - Modificato il comando build predefinito
make
, con il seguente comando build personalizzato:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
Il problema
Ottengo un errore quando provo a creare questo progetto usando eclipse. Ecco il registro per la build:
**** Creazione della configurazione Debug per il progetto TestDriver1 ****
make -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 tutti
make: Immettere la directory '/usr/src/linux-headers-2.6.38-8-generic'
make: *** Nessuna regola per targetizzare
vmlinux', needed by
tutto '. Fermare.make: Lasciando la directory '/usr/src/linux-headers-2.6.38-8-generic'
È interessante notare che non ottengo alcun errore quando utilizzo shell
invece di eclipse
creare questo progetto. Per usare shell
, ho appena creato un Makefile
contenitore obj-m += TestDriver1.o
e uso il make
comando sopra per costruire.
Quindi, qualcosa deve essere sbagliato con l'eclissi Makefile
. Forse sta cercando l' vmlinux
architettura (?) O qualcosa del genere mentre l'architettura attuale è x86. Forse è a causa di VMWare?
Come ho capito, eclipse
crea automaticamente i makefile e modificarli manualmente causerebbe errori in futuro O renderebbe makefile
difficile la gestione .
Quindi, come posso compilare questo progetto su eclipse?
autotools
presto il plugin. Conosci qualche IDE migliore per la programmazione dei driver? Pensi che io (un utente VS pigro che non ha esperienza in Linux) riesco a gestiremakefile
? Èmakefile
davvero gestibile in grandi progetti?