Make: *** [src/fonction.o] Error 1

Spenzys -  
 Spenzys -
Bonjour,

Je souhaite créer un fichier objet à partir d'un fichier .c en utilisant un makefile contenant le code suivant:


src/fonction.o : src/fonction.c
gcc -c src/fonction.c -I include


(il y a effectivement bien une tabulation avant le gcc mais elle ne s'affiche pas sur le forum)

mais lorsque j'exécute "make src/fonction.o", j'obtient ceci:


src/fonction.c:2:19: fatal error: types.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'src/fonction.o' failed
make: *** [src/fonction.o] Error 1


Je précise que mon dossier include contient bien mon fichier.h et que lorsque j'execute "gcc -c src/fonction.c -I include" directement dans le compilateur, tout marche parfaitement.

Merci de votre aide par avance!!

Configuration: Macintosh / Chrome 78.0.3904.97

3 réponses

  1. Antholife
     
    C'est pourtant clair, tu as écris ton makefile, de façon à se qu'il aille chercher un dossier ou un fichier.. or selon le code retour, types.h n'existe pas. Je t'invite à partager ton code entier (makefile) s'il y a, mais aussi l'arborescence COMPLETE de ton projet.
    Merci.
    0
  2. Antholife
     
    Ce qui m'étonne le plus après reflexion c'est de voir que ton fichier .o que tu cherches à crée n'a aucune dépendance de header (.h) .. essaye de rajouter les .h après ta premiere ligne regroupant cible et dependance..
    0
  3. Spenzys
     
    Voici mon makefile (j'ai ajouté des dépendances .h)

    src/fonction.o : src/fonction.c
    gcc -c src/fonction.c -I include

    src/fonction.c : include/types.h


    voici mon fichier types .h:

    #ifndef TYPES
    #define TYPES

    struct point3D{
    double x;
    double y;
    double z;
    };

    struct point2D{
    double x;
    double y;
    };

    #endif


    et voici mon fichier fonction.c:


    #include <stdio.h>
    #include "types.h"

    struct point3D Lorentz( struct point3D u, double sigma,double rho,double beta, double dt)
    {
    // determine la vitesse a l'instant t
    struct point3D v;
    v.x=sigma*(u.y-u.x);
    v.y=u.x*(rho-u.z)-u.y;
    v.z=u.x*u.y-(beta*u.z);

    // Actuallise la position du point
    u.x=u.x+v.x*dt;
    u.y=u.y+v.y*dt;
    u.z=u.z+v.z*dt;
    return(u);

    }

    struct point2D Lotka_Volterra( struct point2D u, double alpha, double beta,double delta, double gamma, double dt )
    {
    // dterminae la vitesse
    struct point2D v;
    v.x=(alpha*u.x)-(beta*u.y);
    v.y=(delta*u.x)-(gamma*u.y);

    // Actuallise la position du point
    u.x=u.x+v.x*dt;
    u.y=u.y+v.y*dt;
    return(u);
    }

    double Bifurcation_fourche( double u,double mu, double alpha, double dt)
    {
    // dterminae la vitesse
    double v;
    v=mu*u+alpha*(u*u*u);

    // Actuallise la position du point
    u=u+v*dt;
    return(u);
    }



    Le projet est structuré comme suit:

    projet/makefile.mk
    projet/include/types.h
    projet/src/fonction.c


    sachant que je cherche à creer fonction.o dans le fichier src.
    0
    1. make
       
      A première vue :
      gcc -c src/fonction.c -I include

      1) Mettre un caractère tabulation en début de ligne (il y est peut-être, avec un affichage non conforme)
      2) Forcer la destination
      gcc -c -o src/fonction.o src/fonction.c  -I include
      0
    2. Spenzys
       
      Merci pour votre réponse
      Il y avait bien une tabulation, c'était effectivement juste un problème d'affichage. Par contre j'ai essayé la commande suggérée mais mon problème reste le même
      Est-il possible que je fasse une erreur lorsque j'utilise le makefile avec le terminal? J'utilise la commande
      make src/fonction.o
      0