Objectif
J'essaie d'écrire un pilote de périphérique simple sur Ubuntu. Je veux le faire en utilisant Eclipse (ou un meilleur IDE adapté à la programmation du pilote). Voici le 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 );
Mon effort
Après quelques recherches, j'ai décidé d'utiliser Eclipse CTD pour développer le pilote (même si je ne sais toujours pas s'il prend en charge les outils de débogage multithread). Donc je:
- Installé Ubuntu 11.04 desktop x86 sur une machine virtuelle VMWare,
- Installés
eclipse-cdt
et linux-headers-2.6.38-8 utilisant Synaptic Package Manager, - Créé un code
C Project
nomméTestDriver1
et copié-collé dessus, - Modification de la commande de génération par défaut,, en la commande de
make
génération personnalisée suivante:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
Le problème
Je reçois une erreur lorsque j'essaie de créer ce projet à l'aide d'Eclipse. Voici le journal de la construction:
**** Construction de la configuration Debug pour le projet TestDriver1 ****
make -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 all
make: Entrer dans le répertoire '/usr/src/linux-headers-2.6.38-8-generic'
make: *** Pas de règle pour viser
vmlinux', needed by
tous '. Arrêtez.make: Quitter le répertoire '/usr/src/linux-headers-2.6.38-8-generic'
Fait intéressant, je ne reçois aucune erreur lorsque j'utilise shell
au lieu de eclipse
construire ce projet. Pour l'utiliser shell
, je crée juste un Makefile
contenant obj-m += TestDriver1.o
et j'utilise la make
commande ci-dessus pour construire.
Donc, quelque chose ne va pas avec l'éclipse Makefile
. Peut-être qu'il cherche l' vmlinux
architecture (?) Ou quelque chose alors que l'architecture actuelle est x86. C'est peut-être à cause de VMWare?
Si j'ai bien compris, la eclipse
création automatique des makefiles et leur modification manuelle entraîneraient des erreurs à l'avenir OU rendraient la gestion makefile
difficile.
Alors, comment puis-je compiler ce projet sur Eclipse?
autotools
bientôt le plugin. Connaissez-vous un meilleur IDE pour la programmation des pilotes? Pensez-vous que je (un utilisateur VS paresseux qui n'a aucune expérience de Linux) puisse gérermakefile
? Est-cemakefile
vraiment gérable dans les grands projets?