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

C Discussion :

[Makefile] Inclusion de fichiers


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 10
    Points : 8
    Points
    8
    Par défaut [Makefile] Inclusion de fichiers
    Bonjour, cela fait déjà quelques temps que je code en C néanmoins ma connaissance en Makefile reste vraiment faible. En effet, les seuls que je fais sont des Makefile "basique" où je dois juste faire un gcc du .c et du .h. Là où ça se corse c'est quand je dois include d'autres fichiers qui ne sont pas dans le même dossier.

    Voilà ce que j'obtiens en fait mon make:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    gcc -Wall Declaration/declaration.c Declaration/declaration.h -o exec_decla
    /usr/bin/ld: /tmp/ccdZtQYC.o: in function `remplir':
    declaration.c:(.text+0x1ad): undefined reference to `region'
    collect2: error: ld returned 1 exit status
    make: *** [Makefile:17: exec_decla] Error 1
    Et maintenant voici un extrait de mon Makefile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CC = gcc
    OPTIONS = -Wall
     
    exec_decla: Declaration/declaration.c Declaration/declaration.h Region/region.h
    	$(CC) $(OPTIONS) Declaration/declaration.c Declaration/declaration.h -o exec_decla
    Et bien évidemment dans mon fichier region.h j'ai déclaré la fonction region() et dans declaration.h j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "../Region/region.h"
    Merci de votre aide, je pense que l'erreur est "bête" mais je n'arrive pas à comprendre où elle se situe

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    Bonjour,
    c'est le linker qui émet l'erreur, cela signifie qu'il ne trouve region dans aucun des fichiers objets que tu lui donnes pour créer l'exécutable au moment de l'édition de liens. Existe-t-il un fichier region.c ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Oui ce fichier existe et il include "region.h"

    Egalement je ne sais pas si c'est important à préciser mais dans region.h j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef REGION_H
    #define REGION_H
    ...
    #endif

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    alors le problème ne vient pas de là où tu pense qu'il vient. Le problème est au niveau de l'édition des liens : il faut fournir region.o à l'éditeur des liens pour créer l'exécutable.
    Tu peux également tirer profit des règles par défaut des makefiles ; ton makefile devrait plus ou moins ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    CFLAGS = -Wall -Wextra -g
     
    all: exec_decla
     
    Declaration/declaration.o: Declaration/declaration.c Declaration/declaration.h Declaration/region.h
     
    Declaration/region.o: Declaration/region.c Declaration/region.h
     
    exec_decla: Declaration/declaration.o Declaration/region.o
     
    .PHONY: all clean
     
    clean:
            ${RM} Declaration/declaration.o Declaration/region.o exec_decla
    Le programme make sait déjà comment faire plein de chose, il suffit juste de lui dire comment les faire comme toi tu veux
    Prendre un petit tuto sur make et le makefiles c'est pas mal non plus pour comprendre comment ça fonctionne

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    exec_decla: Declaration/declaration.c Declaration/declaration.h Region/region.h
    	$(CC) $(OPTIONS) Declaration/declaration.c Declaration/declaration.h -o exec_decla
    Tu compiles declaration.c mais jamais region.c
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup, effectivement le problème venait du fait qu'il me manquait le .o (et aussi que region.c n'était jamais appelé).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant]inclusion de fichier .js !!!
    Par christophebmx dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/01/2005, 14h16
  2. [Inclusion des fichiers] hierarchie
    Par Casp dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 09/07/2004, 12h43
  3. XML Schema et inclusions de fichiers XML
    Par monk31 dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 08/10/2003, 14h17
  4. Inclusion de fichier .h
    Par Tony49 dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/11/2002, 11h10
  5. Inclusion de fichiers en IDL
    Par babou dans le forum CORBA
    Réponses: 10
    Dernier message: 30/07/2002, 16h47

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