[make] edition du makefile
Bonjour à tous,
Je me suis lancer dans la programmation sous linux.......
Je connais assez bien le C et C++ (sous windows)
Pour lier mes fichier *.c sous linux, j'ai découvert "make"
Donc je me lance....................................
Premier makefile :
Code:
1 2
| prod.e : produit.c main.c produit.h
gcc -Wall main.c produit.c produit.h -o prod.e |
dans ma console la commande "make" me repond OK, je teste ./prod, tout fonctionne
D’où je crée un makefile plus évolue (enfin je crois...)
Code:
1 2 3 4 5 6 7 8 9 10 11
| prod: produit.o main.o
gcc -Wall -o prod -o produit.o main.o -ansi
main.o : main.c produit.h
gcc -c -o main.o main.c
produit.o :produit.c produit.h
gcc -c -o produit.o produit.c
clean:
rm *.o |
Et là,
Code:
1 2 3 4 5 6 7
| gcc -c -o main.o main.c
gcc -Wall -o prod -o produit.o main.o -ansi
main.o*: Dans la fonction «*main*»*:
main.c:(.text+0x3c)*: référence indéfinie vers «*produit*»
collect2: error: ld returned 1 exit status
makefile:9*: la recette pour la cible «*prod*» a échouée
make: *** [prod] Erreur 1 |
Cela fait deux jours que je cherche, mais je trouve pas de raison.
les fichier utiliser sont:
Code:
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
| /**********************************************************************/
/*** fichier: produit.h ***/
/*** en-tete de produit.c ***/
/**********************************************************************/
extern int produit(int, int);
/**********************************************************************/
/*** fichier: produit.c ***/
/*** produit de 2 entiers ***/
/**********************************************************************/
#include "produit.h"
int produit(int a, int b)
{
return(a * b);
}
/**********************************************************************/
/*** fichier: main.c ***/
/*** saisit 2 entiers et affiche leur produit ***/
/**********************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include "produit.h"
int main(void)
{
int a, b, c;
scanf("%d",&a);
scanf("%d",&b);
c = produit(a,b);
printf("\nle produit vaut %d\n",c);
return EXIT_SUCCESS;
} |
SI quelqu'un pouvait me dire ou se trouve le problème....
Merci
Pour info, je programme sous raspberry 3+ avec Geany pour l’édition et une session console pour la compilation et les test.
Michel