[C] gcc compilation

gcc compilation [C] - Programmation

Marsh Posté le 27-03-2002 à 16:51:27    

Salut j'ai un petit programme sous linux que je veux compiler.  
Il tient sur deux fichiers : main.c et fonctions.c  
Donc dans mon main.c j'ai fait un #include "fonctions.c"  
 
Je précise que sous borland (sous win) ca passe.  
 
Donc je lance la commande gcc main.c fonctions.c -o truc et là il me sort des erreurs  bizarres dans ce genre :  
 
/tmp/ccoppE6a.o: In function `saisie':  
/tmp/ccoppE6a.o(.text+0x0): multiple definition of `saisie'  
/tmp/ccPqRkUi.o(.text+0x0): first defined here  
/tmp/ccoppE6a.o: In function `ad_source':  
/tmp/ccoppE6a.o(.text+0xb4): multiple definition of `ad_source'  
/tmp/ccPqRkUi.o(.text+0xb4): first defined here  
/tmp/ccoppE6a.o: In function `ad_dest':  
/tmp/ccoppE6a.o(.text+0xe4): multiple definition of `ad_dest'  
/tmp/ccPqRkUi.o(.text+0xe4): first defined here  
collect2: ld returned 1 exit status  
 
Une idée ?  
 
CHaiCA

 

[jfdsdjhfuetppo]--Message édité par chaica--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 27-03-2002 à 16:51:27   

Reply

Marsh Posté le 27-03-2002 à 16:56:47    

est-ce que dans ton fonctions.c, tu as à la fois des prototypes et des définitions de fonctions, cad:
 
 
int fonction1(param...);
 
et plus loin:
int fonction1(param...) {
...
}


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 27-03-2002 à 17:00:21    

Ben non en fait je n'ai que la fonction en elle même j'ai pas le prototype.
 
CHaiCA

Reply

Marsh Posté le 27-03-2002 à 17:02:52    

je ne suis pas sur de la cause de ton pb, mais un #include de .c me choque
 
tu devrais creer un fonctions.h avec tous les prototypes de fonctions.c et faire un #include de fonctions.h dans les 2 .c
 
c'est clair ? :D


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 27-03-2002 à 17:06:05    

Question : j'ai mes fonctions dans fonctions.h mais je n'ai pas déclaré de prototype nulle part. Dois je le faire dans main.c  
 
CHaICA  
 
ps : jupiler :ouais je comptais le faire plus tard.

 

[jfdsdjhfuetppo]--Message édité par chaica--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 27-03-2002 à 17:09:14    

il faut mettre dans fonctions.h les prototypes des fonctions définies dans fonctions.c  
 
et dans les 2 .c mettre #include fonctions.h


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 27-03-2002 à 17:09:44    

Oui c'est normal ton problème ....  
 
si tu inclus fonction.c dans main.c , il ne faut pas compiler fonction.c à part.... :non:
 
c'est à dire qu'il faut simplement faire : gcc main.c -o truc
 
sinon il compile deux fois les memes fonctions et forcément à l'edition des liens il merde.

 

[jfdsdjhfuetppo]--Message édité par mokett--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 27-03-2002 à 17:15:32    

mokett a écrit a écrit :

Oui c'est normal ton problème ....  
 
si tu inclus fonction.c dans main.c , il ne faut pas compiler fonction.c à part.... :non:
 
c'est à dire qu'il faut simplement faire : gcc main.c -o truc
 
sinon il compile deux fois les memes fonctions et forcément à l'edition des liens il merde.  
 
 




 
je suis d'accord :jap:


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 27-03-2002 à 17:22:49    

Jupiler : bon j'ai crée mon fonctions.h avec mes prototypes et c'est passé tout de suite merci.
 
Mokette : merci aussi je note !
 
CHaiCA

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed