[C] sqrt un peu recalcitrant ...

Résolu
periplasme Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   -
salut tout le monde !
dans le cadre d'une fonction d'un projet (determiner la nature d'un triangle) j'ai besoin de cette bonne vieille fonction sqrt() ...
seulement, a la compilation, j'ai droit a un magnifique
projetMethInfo.c: (.text+0x4c5): undefined reference to 'sqrt'
collect2: ld returned 1 exit status


je vous rassure tout de suite : je n'ai pas oublier d'inclure math.h ;-)

la fonction incriminée :
double distance( coordonnee a, coordonnee b){
     return (sqrt(carre(a.x - b.x)+carre(a.y-b.y)));
}


nb : la fonction carre() retourne une valeur de type double (je pense pas que le probleme viennent de la, mais sait-on jamais).

une âme charitable pourrait-elle m'apporter ses lumière sur ce probleme ?


1 réponse

mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Il faut compiler en linkant avec la librairie lib mathématique (libm.so), ce qui donne la ligne de compilation :

gcc -W -Wall plop.c -o plop -lm


Bonne chance
1
periplasme Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   53
 
rah ! oui c'est exacte ça compile a merveille ! il me semble avoir deja rencontrer ce probleme, mais plus moyen de me souvenir de la solution ...
merci bien !
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Bah de toute façon, "undefined reference" signifie que tu as fait appel à une fonction déclarée (par exemple dans un header) mais pas trouvé dans les binaires (soit les .o, soit les .so, soit les .a avec lesquels tu linkes).

Quand tu as ce message il suffit juste de te demander lequel d'entre eux contient la fonction manquante et le rajouter dans la ligne de compilation où tu linkes.

Bonne continuation ;-)
0