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 : erreur d'horloge détecté


Sujet :

C

  1. #1
    Membre du Club Avatar de Redgard
    Homme Profil pro
    x
    Inscrit en
    Décembre 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : x

    Informations forums :
    Inscription : Décembre 2014
    Messages : 90
    Points : 60
    Points
    60
    Par défaut MakeFile : erreur d'horloge détecté
    Bonjour à tous,

    Pour un travail dans un MOOC en ligne, je suis amené à devoir compilé un programme de répertoire de contact, dans lequel j'ai rajouté deux fonctions afin de stocké le répertoire de contact dans un fichier "repertoire.txt".

    Or lors de la compilation, le fichier se compile mais le compilateur en ligne me renvoit un message d'erreur à propos d'un "problème d'horloge", mais malgré mes recherches sur internet, je n'arrive pas très bien à comprendre le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    make: Warning: File `makefile' has modification time 1.5e+03 s in the future
    make: warning:  Clock skew detected.  Your build may be incomplete.
    Mon MakeFile:
    J'ai lu (ici) que je pouvais rajouter la commande -I. à la fin des lignes de codes de mon makefile, pour le faire chercher dans le dossier où se trouve les fichiers. Est-ce toujours d'actualité? Est-ce réellement intéressant?
    J'ai lu que ça pourrait être lié à un problème de synchronisation d'horloge entre ma machine et le compilateur en ligne?
    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
    # pour webworkbench
    # CC=tcc 
    CC=gcc
     
    repertoireIHM.exe : repertoireIHM.o repertoire.o lireClavier.o repertoireFichier.o
    	${CC}  -o repertoireIHM.exe repertoireIHM.o repertoire.o lireClavier.o	repertoireFichier.o
     
    repertoireIHM.o : repertoireIHM.c repertoire.h lireClavier.h repertoireFichier.h
    	${CC} -c repertoireIHM.c
     
    repertoire.o : repertoire.c repertoire.h
    	${CC} -c repertoire.c
     
    lireClavier.o : lireClavier.c lireClavier.h
    	${CC} -c lireClavier.c
     
    repertoireFichier.o : repertoireFichier.c repertoireFichier.h repertoire.h
    	${CC} -c repertoireFichier.c
     
    clean:
    	rm *.o



    Mes fichiers:
    repertoireFichier.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ifndef __REPERTOIREFICHIER_H
    #define __REPERTOIREFICHIER_H
     
    void restCont(Contact *tab);						//fonction copiant le contenu du "repertoire.txt" dans "tab"
     
    void saveCont(Contact *tab);						// fonction copiant le contenu de "tab" dans "repertoire.txt"
     
    #endif
    repertoireFichier.c
    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
    30
    31
    32
    #include <stdio.h>
    #include <stdlib.h>
    #include "repertoire.h"																	// inclus pour récupéré la structure contact
    #include "repertoireFichier.h"
     
    void restCont(Contact *tab) {															// fonction récupérant les contacts stocké dans le fichier "repertoire.txt"
    	FILE *fs;																			// pointeur Fichier Source
     
    	if ((fs = fopen("repertoire.txt", "r")) == NULL) {									// Condition "if" ouvrant en lecture le fichier "repertoire.txt", copiant son contenu dans "fs", et vérifiant son existence.
    		printf("Echec de l'ouverture du fichier \"repertoire\" en lecture\n");
    	}
     
    	while (fscanf(fs, "%s;%s\n", tab->nom, tab->numero) != EOF)							// Boucle "while" copiant le contenu du tableau "fs" tant que la fin du fichier n'est pas atteinte
    		tab++;																			// Passage à la case suivante du tableau
     
    	fclose(fs);
    }
     
    void saveCont(Contact *tab) {															// fonction copiant les dernières modifications des contacts dans le fichier "repertoire.txtt"
    	FILE *fd;																			// pointeur Fichier Destination
     
    	if ((fd = fopen("repertoire.txt", "w")) == NULL) {									// Condition "if" ouvrant en écriture le fichier "repertoire.txt", copiant son contenu dans "fd", et vérifiant son existence.
    		printf("Echec de l'ouverture du fichier \"repertoire.txt\" en écriture.\n");
    	}
     
    	while (tab->nom[0] != '\0') {														//bouclant tournant jusqu'à rencontrer une case vide
    		fprintf(fd, "%s;%s\n", tab->nom, tab->numero);
    		tab++;
    	}
     
    	fclose(fd);
    }



    Les fichiers fournis pour l'exercice:
    repertoireIHM.c
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "repertoire.h"
    #include "lireClavier.h"
    #include "repertoireFichier.h"
     
    int menu(){
      int option=0;
      printf("1: ajouter un contact\n");
      printf("2: rechercher un contact\n");
      printf("3: supprimer un contact\n");
      printf("4: afficher tous les contacts\n");
      printf("5: quitter\n");
      while(option<1 || option>5){
        printf("    votre choix: ");
        option = lireEntier();
      }
      return option;
    }
     
    char* saisir_string(char* chose, char* op, char *res, int taille){
      printf("Entrez le %s du contact Ã* %s\n",chose,op);
      lireMot(res, taille);
      return res;
    }
     
    int main(){
      Repertoire lerep;
      int i;
      int option=0;
      char nom[99+1];
      char numero[19+1];
      Contact cont;
      bool done;
      nom[0] = numero[0] = '\0';
      for(i=0; i<100; i++){				//nettoyage du répertoire?
        strcpy(lerep[i].nom,"");
        strcpy(lerep[i].numero,"");
      }
     
      restCont(lerep);					//copie la liste de contact du fichier "repertoire.txt" dans le tableau "lerep" de structure "Contact".
     
      while(option != 5){
        option = menu();
        switch(option){
        case 1:
          saisir_string("nom","ajouter", nom, 99);
          saisir_string("numero","ajouter", numero, 19);
          ajouterContact(nom,numero,lerep);
          break;
        case 2:
          saisir_string("morceau du nom","rechercher", nom, 99);
          cont = rechercherContact(nom,lerep);
          if (strlen(cont.nom)>0){
    	printf("nom: %s numéro: %s\n",cont.nom,cont.numero);
          }else{
    	printf("aucun contact trouvé\n");
          }
          break;
        case 3:
          saisir_string("morceau du nom","supprimer", nom, 99);
          done = supprimerContact(nom,lerep);
          if (done)
    	printf("contact supprimé\n");
          else
    	printf("aucun contact correspondant: %s\n",nom);
          break;
        case 4:
          afficherRepertoire(lerep);
          break;
        case 5:
          saveCont(lerep);			//copie de la liste des contactes du tableau "lerep" dans le fichier "repertoire.txt".
    	  printf("au revoir\n");
        }
      }
     
      return 0;
    }
    repertoire.h
    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
    #ifndef __REPERTOIRE_H
    #define __REPERTOIRE_H
     
    #define TRUE 1
    #define FALSE 0
    typedef  int bool;
     
    typedef struct 
    {
        char nom[100];
        char numero[20];
    } Contact;
     
    typedef Contact Repertoire[100];
     
    bool pluspetit(char* s1, char* s2);
    void decaler(int indice, Repertoire rep);
    void ajouterContact(char* nom, char* num, Repertoire rep);
    bool charsEgaux(char c1, char c2);
    bool estDans(char* morceau, char* chaine);
    int rechercherIndiceContact(char* sschaine, Repertoire rep);
    Contact rechercherContact(char* sschaine, Repertoire rep);
    bool supprimerContact(char* sschaine, Repertoire rep);
    void afficherRepertoire(Repertoire rep);
     
    #endif
    repertoire.c
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "repertoire.h"
     
    bool pluspetit(char* s1, char* s2){
      bool diff = FALSE;
      int lg1, lg2;
      int i = 0;
      lg1 = strlen(s1);
      lg2 = strlen(s2);
      while (i<lg1 && i<lg2 && !diff){
        if (s1[i] != s2[i])
          diff = TRUE;
        else
          i++;
      }
      if (diff){
        if (s1[i]<s2[i])
          return TRUE;
        else
          return FALSE;
      }else{
        if (lg1<lg2)
          return TRUE;
        else
          return FALSE;
      }
    }
     
    void decaler(int indice, Repertoire rep){
      int i=0;
      int j;
      while(strlen(rep[i].nom)!=0)
        i++;
      for (j=i; j>indice; j--){
        strcpy(rep[j].nom,rep[j-1].nom);
        strcpy(rep[j].numero,rep[j-1].numero);
      }
    }
     
    void ajouterContact(char* nom, char* num, Repertoire rep){
      int i=0;
      while (strlen(rep[i].nom)!=0 && pluspetit(rep[i].nom,nom)){
        i++;
      }
      decaler(i,rep);
      strcpy(rep[i].nom,nom);
      strcpy(rep[i].numero,num);
    }
     
    bool charsEgaux(char c1, char c2){
      switch(c1-c2){
      case 0: 
      case 32: // macro?
      case -32: 
        return TRUE;
      default:
        return FALSE;
      }
    }
     
    bool estDans(char* morceau, char* chaine){
      int ind =0;
      int ssind;
      bool trouve = FALSE;
      while(!trouve && strlen(chaine)-ind >= strlen(morceau)){
        ssind = 0;
        trouve = TRUE;
        while(trouve && ssind<strlen(morceau)){
          trouve = charsEgaux(chaine[ind+ssind],morceau[ssind]);
          ssind++;
        }
        ind++;
      }
      return trouve;
    }
     
     
    int rechercherIndiceContact(char* sschaine, Repertoire rep){
      int i=0;
      while(!estDans(sschaine,rep[i].nom) &&
    	strlen(rep[i].nom )!=0)
        i++;
      return i;
    }
     
    Contact rechercherContact(char* sschaine, Repertoire rep){
      int i=rechercherIndiceContact(sschaine,rep);
      return rep[i];
    }
     
     
    bool supprimerContact(char* sschaine, Repertoire rep){
      int ind = rechercherIndiceContact(sschaine,rep);
      if (strlen(rep[ind].nom)==0)
        return FALSE;
      while(strlen(rep[ind].nom)!=0){
        strcpy(rep[ind].nom,rep[ind+1].nom);
        strcpy(rep[ind].numero,rep[ind+1].numero);
        ind++;
      }
      return TRUE;
    }
     
    void afficherRepertoire(Repertoire rep){
      int ind = 0;
      for(ind = 0; strlen(rep[ind].nom)!=0; ind++){
          printf("nom: %s numéro: %s\n",rep[ind].nom,rep[ind].numero);
      }
    }
    lireClavier.h
    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
    #ifndef __LIRECLAVIER_H
    #define __LIRECLAVIER_H
    #include <stdio.h>
     
    /* retourne un entier lu sur l'entrée standard et nettoie toute la ligne courante.
     */
    int lireEntier(void);
     
    /* retourne un caractère lu sur l'entrée standard et nettoie toute la ligne courante.
     */
    char lireCaractere(void);
     
    /* retourne un mot lu sur l'entrée standard et nettoie toute la ligne courante.
     */
    char * lireMot(char *s, int taille);
     
    /* retourne une ligne lue sur l'entrée standard 
     */
    char * lireLigne(char *s, int taille);
     
    #endif
    lireClavier.c
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #include <string.h>
    #include "lireClavier.h"
     
    void videResteLigne(void) {
      char c;
      do {
        scanf("%c", &c);
      } while (c != '\n');
    }
     
    int lireEntier(void) {
      int entierLu = 0, nbEntiersLus;
      nbEntiersLus = scanf("%d", &entierLu);
      if (nbEntiersLus != 1) {
        fprintf(stderr, "Erreur de format: veuillez saisir un entier.\n");
      }
      videResteLigne();
     
      return entierLu;
    }
     
    char lireCaractere(void) {
      char c;
      scanf("%c", &c);
      if (c != '\n') {
        videResteLigne();
      }
      return c;
    }
     
    char * lireLigne(char *s, int taille) {
      int l;
      fgets(s, taille, stdin);
      l = strlen(s);
      if ( l > 1 && s[l-1] == '\n' )
        s[l-1] = '\0';
      else
        videResteLigne();
      return s;
    }
     
    char * lireMot(char *s, int taille) {
      char buff[taille+1];
      lireLigne(buff, taille);
      s[0] = '\0';
      buff[taille] = '\0'; // prevent sscanf overflow!!
      sscanf(buff, "%s", s);
      s[taille] = '\0';
      return s;
    }
     
    /*
    int printf(const char *f, ...) {
      fprintf(stdout, "HJHJHJHJ\n");
    }
    */



    @Sve@r J'ai retiré les exits, mais je n'ai pas mis de return, je n'ai pas trop envie d'aller chipoter dans le reste du code. Je préfère finir ça rapidement et me mettre sur de nouveaux tutos/ autres . à part Développez.net, tu as d'autres sites à me conseiller pour apprendre le C? J'ai actuellement:

  2. #2
    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
    Il te dit que ton makefile est daté dans le futur. Aurais-tu récemment changé l'heure de ton pc (l'heure du système)

    Cela pose problème à make, parce qu'il utilise les dates des fichiers pour savoir s'il y a quelque chose à faire.
    Si une cible est plus ancienne que l'une de ses dépendances il doit la générer à nouveau.

    Si le makefile est daté dans le futur, alors les dates ne sont pas fiables et make préfère ne rien faire.
    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

  3. #3
    Membre du Club Avatar de Redgard
    Homme Profil pro
    x
    Inscrit en
    Décembre 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : x

    Informations forums :
    Inscription : Décembre 2014
    Messages : 90
    Points : 60
    Points
    60
    Par défaut
    :s non... Je viens de vérifier par rapport à internet, je suis à la bonne heure.
    Est ce que c'est possible que ce soit le compilateur en ligne qui soit pas à la bonne heure/ en retard?

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Redgard Voir le message
    Est ce que c'est possible que ce soit le compilateur en ligne qui soit pas à la bonne heure/ en retard?
    Bonjour
    Oui possible. Le compilateur en ligne, d'après ce que tu as dit sur d'autres topics, ne semble pas trop casser des briques. Mais 1.5e+03 font 1500 secondes (25 minutes). C'est un peu beaucoup (pour l'exemple, les NTP arrêtent de synchroniser dès que l'écart dépasse 15 minutes).
    Mais bon, là on ne peut trop rien faire. Si tu peux vérifier la date de ton compilo en ligne. Par exemple en tentant un truc de ce style (dans ton makefile)
    Et ensuite tu tapes make date...

    Citation Envoyé par Redgard Voir le message
    Mon MakeFile:
    J'ai lu (ici) que je pouvais rajouter la commande -I. à la fin des lignes de codes de mon makefile, pour le faire chercher dans le dossier où se trouve les fichiers.
    Non. C'est pour indiquer au compilateur où se trouvent les ".h".
    Quand tu tapes #include "xxx/yyy/toto.h" (avec des guillemets), le compilateur ira chercher "toto.h" dans le dossier "xxx/yyy" (chemin pris à partir de la position du source qui demande l'include et non chemin pris à partir de l'endroit où tu lances ta compilation !!!)

    Quand tu tapes #include <xxx/yyy/toto.h> (avec <>), alors le compilateur cherchera "xxx/yyy/toto.h" à partir d'une liste de dossiers préétablis ("/usr/include" entre autre, donc il cherchera "/usr/include/xxx/yyy/toto.h"). En rajoutant "-Irep" à la ligne de compilation, tu rajoutes "rep" aux dossiers de recherche.
    Ici, en tapant "-I." ça rajoute "." (dossier courant) aux dossiers de recherche. Si ensuite tu crées un fichier "toto.h" dans ton dossier courant, tu peux alors l'inclure soit en tapant #include "toto.h" (utilisation des chemins classiques), soit en tapant #include <toto.h> (utilisation des dossiers de recherche, ce qui ne serait pas possible s'il n'y avait pas "-I.")

    Citation Envoyé par Redgard Voir le message
    Est-ce réellement intéressant?
    Dans un projet, avec beaucoup de sous-dossiers, oui. Tu crées un dossier "include", puis tu rajoutes "-Iinclude" aux options de compilation.
    Ensuite, quellle que soit la position d'un source (qu'il soit dans le dossier "xxx", ou le sous dossier "xxx/yyy", ou le sous sous dossier "xxx/yyy/zzz") tu peux écrire #include <toto.h> ton compilo ira toujours chercher alors "include/toto.h" sans se préoccuper de l'endroit où se trouve le source qui demande l'inclusion...
    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]

  5. #5
    Membre du Club Avatar de Redgard
    Homme Profil pro
    x
    Inscrit en
    Décembre 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : x

    Informations forums :
    Inscription : Décembre 2014
    Messages : 90
    Points : 60
    Points
    60
    Par défaut
    Pour le compilateur/correcteur:
    Ce truc est absurde, je passe d'un score de 25% à 0% puis à 65% sans rien faire, ni changer... il y a de quoi bouffer du popcorn devant tellement ce truc a l'air d'être au bout de sa vie.

    pour le 65%, tout c'est bien passé, c'est juste qu'à cause des codes d'erreur lié à l'horloge, j'ai pas le full score. Je suis en mode de pas m'ennuyer avec.
    Je suis belge (heure d'hiver - GMT +1) je sais pas si ça peut influencer?


    Quand je rajoute la ligne de la date, il m'affiche une erreur. Est-ce que je me suis planté quelques part?

    Erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    makefile:24: *** missing separator.  Stop.
    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
    # pour webworkbench
    # CC=tcc 
    CC=gcc
     
    repertoireIHM.exe : repertoireIHM.o repertoire.o lireClavier.o repertoireFichier.o
    	${CC}  -o repertoireIHM.exe repertoireIHM.o repertoire.o lireClavier.o	repertoireFichier.o
     
    repertoireIHM.o : repertoireIHM.c repertoire.h lireClavier.h repertoireFichier.h
    	${CC} -c repertoireIHM.c
     
    repertoire.o : repertoire.c repertoire.h
    	${CC} -c repertoire.c
     
    lireClavier.o : lireClavier.c lireClavier.h
    	${CC} -c lireClavier.c
     
    repertoireFichier.o : repertoireFichier.c repertoireFichier.h repertoire.h
    	${CC} -c repertoireFichier.c
     
    clean:
    	rm *.o *.exe
     
    date:
        date
    Je pense qu'on va juste arrêter les frais là.
    ça devrait me faire une moyenne de +90%, je suis pas sûr que faire des efforts supplémentaire pour aller chercher quelques % de moyennes supplémentaires soit un bon investissement de mon temps et de vôtre.
    Je vais pas vous ennuyer avec ce problème.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Redgard Voir le message
    il y a de quoi bouffer du popcorn devant tellement ce truc a l'air d'être au bout de sa vie.


    Citation Envoyé par Redgard Voir le message
    Quand je rajoute la ligne de la date, il m'affiche une erreur.

    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
    # pour webworkbench
    # CC=tcc 
    CC=gcc
     
    repertoireIHM.exe : repertoireIHM.o repertoire.o lireClavier.o repertoireFichier.o
    	${CC}  -o repertoireIHM.exe repertoireIHM.o repertoire.o lireClavier.o	repertoireFichier.o
     
    repertoireIHM.o : repertoireIHM.c repertoire.h lireClavier.h repertoireFichier.h
    	${CC} -c repertoireIHM.c
     
    repertoire.o : repertoire.c repertoire.h
    	${CC} -c repertoire.c
     
    lireClavier.o : lireClavier.c lireClavier.h
    	${CC} -c lireClavier.c
     
    repertoireFichier.o : repertoireFichier.c repertoireFichier.h repertoire.h
    	${CC} -c repertoireFichier.c
     
    clean:
    	rm *.o *.exe
     
    date:
        date
    Est-ce que je me suis planté quelques part?
    As-tu remarqué que la dernière règle n'est pas alignée avec les autres ???
    L'ordre d'instruction correspondant à la règle doit avoir une tabulation. C'est impératif.
    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]

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/11/2017, 22h19
  2. Réponses: 2
    Dernier message: 22/01/2009, 16h52
  3. [compilation] Makefile erreur (linkage?)
    Par Valkirion dans le forum C++
    Réponses: 7
    Dernier message: 03/08/2007, 21h24
  4. makefile : erreur makefile
    Par boheme83 dans le forum Systèmes de compilation
    Réponses: 2
    Dernier message: 14/03/2007, 17h02
  5. Erreur dans le makefile
    Par titor dans le forum OpenGL
    Réponses: 1
    Dernier message: 23/11/2005, 21h26

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