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 :

Pas de règle pour fabriquer la cible (Makefile)


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Pas de règle pour fabriquer la cible (Makefile)
    Bonsoir,
    j'ai un petit souci avec un Makefile. J'ai comme message d'erreur:
    "Pas de règle pour fabriquer la cible « embedder.o »"
    Or le fichier embedder.c en question est dans le dossier avec d'autres fichiers C dont les fichiers objets sont générés sans souci.
    Voici le Makefile:


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    CC=`which gcc`
    RM=/bin/rm -f
    MV=/bin/mv
     
    INC=../include 
     
    CFLAGS=`libit-config --cflags` -O2 -Wall -I $(INC) 
    LFLAGS=`libit-config --libs`
     
    COMMONS=utils.o upsampling.o ss.o
     
    EMBED_OBJ=mixing.o masking.o modulation.o
    DECODE_OBJ=fft.o estimation.o
     
    all : embedder decoder
     
    embedder : embedder.o $(COMMONS) $(EMBED_OBJ)
    	$(CC) $^ $(LFLAGS) -o $@ 
     
    decoder : decoder.o $(COMMONS) $(DECODE_OBJ)
    	$(CC) $^ $(LFLAGS) -o $@ 
     
    .c.o : 
    	$(CC) $(CFLAGS) $^ -c 
     
    clean :
    	@mv imodulation.o imodulation.save
    	@$(RM) $(COMMONS) embedder.o decoder.o $(EMBED_OBJ) $(DECODE_OBJ) *~ semantic* 
    	@mv imodulation.save imodulation.o


    Je ne connais pas la syntaxe pour les Makefile, du coup je ne sais pas du tout où ça cloche.
    Merci d'avance pour toute suggestion.

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Le ligne suivante me parait louche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .c.o :
    	$(CC) $(CFLAGS) $^ -c
    Que se passe-t-il si tu la remplaces par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %.o: %.c
    	$(CC) -o $@ -c $< $(CFLAGS)
    Au passage, un bon tuto : http://gl.developpez.com/tutoriel/outil/makefile/

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Idem
    En changeant la ligne, cela donne tjs

    make: *** Pas de règle pour fabriquer la cible « embedder.o », nécessaire pour « embedder ». Arrêt.

    Merci pour le tuto

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par arsene87 Voir le message
    Bonsoir,
    j'ai un petit souci avec un Makefile. J'ai comme message d'erreur:
    "Pas de règle pour fabriquer la cible « embedder.o »"
    Ce message signifie qu'une de tes règles a pour dépendance le fichier ou la règle en question et que ni l'un ni l'autre n'existent.

    C'est ici :

    Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    embedder : embedder.o $(COMMONS) $(EMBED_OBJ)
    	$(CC) $^ $(LFLAGS) -o $@ 
    
    decoder : decoder.o $(COMMONS) $(DECODE_OBJ)
    	$(CC) $^ $(LFLAGS) -o $@

    « embedder.o » fait partie des dépendances de « embedder » et n'est produit nulle part ailleurs. Je pense que c'est « embedder.c » que tu voulais mettre ici. Même chose pour « decoder ».

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    En mettant embedder.c au lieu d'embedder.o, c'est pareil:
    make: *** Pas de règle pour fabriquer la cible « embedder.c », nécessaire pour « embedder ». Arrêt.

    Ce n'est pas mon makefile. Le prof l'a fournit pour un TP ( qui n'a rien à voir avec les makefile ) et ça tournait bien en salle info. Mais là pas moyen de finir le TP sur mon PC, ça me bloque pour la suite

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ca marche
    Il fallait mettre le makefile tel quel dans le dossier contenant les sources et compiler dans ce dossier.
    Merci

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Super, mais n'oublie pas !

  8. #8
    Candidat au Club
    Homme Profil pro
    reconversion
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : reconversion
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Demande de precision :
    Bonjour, quelques années parès, j'ai peu d'espoir que tu te souvienne... Mais de quelles 'sources" parles tu ?? J'ai le même problème ça me gonfle..
    Merci

  9. #9
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    des fichiers sources.
    Mais ouvre ton propre sujet, car je pense que tu vas rapidement avoir d'autres questions.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. make pas de règle pour fabrique la cible clean
    Par sousoux dans le forum Linux
    Réponses: 11
    Dernier message: 09/12/2014, 10h20
  2. Makefile : pas de règle pour fabriquer la cible « moc »
    Par allchimiste dans le forum Débuter
    Réponses: 1
    Dernier message: 18/06/2013, 14h33
  3. Aucune règle pour fabriquer la cible
    Par rainbowcrypt dans le forum Modules
    Réponses: 1
    Dernier message: 05/06/2011, 16h41
  4. Réponses: 3
    Dernier message: 15/02/2009, 10h27
  5. [postfix] make tidy: Pas de règle pour fabriquer la cible « tidy »
    Par rvfranck dans le forum Administration système
    Réponses: 5
    Dernier message: 23/06/2007, 16h49

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