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-cdtet linux-headers-2.6.38-8 utilisant Synaptic Package Manager, - Créé un code
C ProjectnomméTestDriver1et copié-collé dessus, - Modification de la commande de génération par défaut,, en la commande de
makegé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 bytous '. 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 shellau lieu de eclipseconstruire ce projet. Pour l'utiliser shell, je crée juste un Makefilecontenant obj-m += TestDriver1.oet j'utilise la makecommande ci-dessus pour construire.
Donc, quelque chose ne va pas avec l'éclipse Makefile. Peut-être qu'il cherche l' vmlinuxarchitecture (?) Ou quelque chose alors que l'architecture actuelle est x86. C'est peut-être à cause de VMWare?
Si j'ai bien compris, la eclipsecréation automatique des makefiles et leur modification manuelle entraîneraient des erreurs à l'avenir OU rendraient la gestion makefiledifficile.
Alors, comment puis-je compiler ce projet sur Eclipse?
autotoolsbientô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-cemakefilevraiment gérable dans les grands projets?