[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gcc a-t-il changé?



paul.chavent@fnac.net a écrit récemment que :

> je vient de changer de distrib. J'avait une mandrake 6.2 et me voila avec
> une debian 2.2.
> Mon probleme est que je n'arrive plus à compiler certains truc dont:
> -pour faire un test simple :
> //////////////////////////////////////////////////
> #include <stdio.h>
> #include <stdlib.h>
> #include <math.h>
> 
> int main(int argc, char *argv[]){
>         double N;
> 
>         N=sqrt(4.0);
>         printf("%d ",N);
>         printf("Hello, world!\n");
>         return EXIT_SUCCESS;
> }
> ///////////////////////////////////////////////////
> 
> gcc main.c -o main me retourne:
> main.o: In function `main':
> ~/main.c:30: undefined reference to `sqrt'
> collect2: ld returned 1 exit status
> 


Ce comportement est normal.
c'était quoi le compilateur sous Mandrake 6.2 ? 

"undefined reference to sqrt" signifie bien ce que ça veut dire. Le
compilateur ne trouve pas le code de sqrt

Il faut lier ton code avec la bibliothèque mathématique

gcc - -lm main.c -o main 

C'est le comportement de tous les compilateurs sous Unix que je
connais. La bibliothèque mathématique est séparée et nécessite donc
d'être ajoutée manuellement à l'édition de liens.


> meme chose avec les librairies curses...

Et même réponse, il faut indiquer à l'éditeur de liens (ld) la
bibliothèque supplémentaire.

> 
> -un autre message d'erreur m'empeche d'arriver à la fin de la compilation
> de lcdproc alors que ca marchais sous mon anciene distrib
> 

Quel est le message d'erreur exact ?

-- 
Guillaume Rumeau <rumeau@isty-info.uvsq.fr>

« L'homme est doué d'une vaste intelligence 
qui regarde devant elle et au-delà » (J.L)



Reply to: