[C] sqrt un peu recalcitrant ...
Résolu
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
je vous rassure tout de suite : je n'ai pas oublier d'inclure math.h ;-)
la fonction incriminée :
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 ?
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
-
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-
-
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 ;-)
-