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: