IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Erreur de compilation dans les fichier d'en-tête


Sujet :

Linux

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 52
    Par défaut Erreur de compilation dans les fichier d'en-tête
    Bonjour,

    Je suis actuellement en train de lire un livre sur la programmation de pilotes sur linux.
    Au début de ce livre un exemple de code de module nous est donné.

    J'ai donc essayé de le compiler mais sans succès. Le compilateur me dit qu'il trouve des erreurs dans les fichiers d'en-tête que j'utilise, hors ces fichiers proviennent des sources du noyau. Je n'arrive pas à comprendre comment il pourrait y avoir des erreurs dans ces fichiers.

    Le code que j'essaye de compiler est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <linux/init.h>
    #include <linux/module.h>
    MODULE_LICENSE("Dual BSD/GPL");
    static int hello_init(void)
    {
        printk(KERN_ALERT "Hello, world\n");
        return 0;
    }
    static void hello_exit(void)
    {
        printk(KERN_ALERT "Goodbye, cruel world\n");
    }
    module_init(hello_init);
    module_exit(hello_exit);
    La ligne de commande que j'utilise pour le compiler est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -I /usr/src/linux-2.6.26.2/include hello_world.c -o hello_world
    Est-ce que quelqu'un saurait d'ou vient le problème ?

  2. #2
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Par défaut
    Makefile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    obj-m := hello_world.o
    KERNELDIR ?= /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)
     
    modules:
    	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
     
    clean:
    	rm -rf *.o *~ .*.cmd *.ko *.mod.c .tmp_versions
     
    .PHONY: modules clean

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 52
    Par défaut
    Bonjour,

    Tous d'abord merci pour la réponse.
    Je l'ai testé mais j'ai encore des erreurs.

    La première erreur est que le répertoire build n'existe pas à l'adresse indiquée.
    Je l'ai créé et ai réessayé.

    J'ai alors eu une autre erreur me disant qu'il n'y a pas de règles pour fabriquer la cible "modules".

    Est-ce que quelqu'un saurait où est le problème ?

    Je ne sais pas comment fonctionne un makefile je vais faire des recherches de ce côté-là, toutefois si quelqu'un connait un bon cours sur le sujet qu'il n'hésite pas à me donner le lien.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 52
    Par défaut
    Personne n'a une idée ?

    Peut-être quelqu'un pourra t-il répondre à cette question.
    Pourquoi n'ais je pas de répertoire build/ dans /lib/modules/2.6.26-2-686/ ?

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par belgariel Voir le message
    Personne n'a une idée ?

    Peut-être quelqu'un pourra t-il répondre à cette question.
    Pourquoi n'ais je pas de répertoire build/ dans /lib/modules/2.6.26-2-686/ ?
    A ce niveau-là, il est nécessaire de connaitre ta distrib. Mais si t'es sous Debian (comme moi), alors il te faut installer les linux headers sinon tu ne les auras pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apt-get install linux-headers-$(uname -r)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 52
    Par défaut
    Oui je suis sous debian.

    J'ai trouvé cela un peu après avoir poster le message.

    Merci pour ta réponse.

Discussions similaires

  1. Option de compilation dans les fichiers *.dfm
    Par j.p.mignot dans le forum EDI
    Réponses: 12
    Dernier message: 21/08/2014, 10h30
  2. Réponses: 1
    Dernier message: 05/02/2014, 00h20
  3. Erreur de compilation dans les headers
    Par Invité dans le forum C
    Réponses: 4
    Dernier message: 04/12/2011, 15h45
  4. Réponses: 5
    Dernier message: 21/12/2009, 10h01
  5. [Mingw] Corriger les warning dans les fichiers d'en-tête
    Par gege2061 dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 12/06/2007, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo