Undefined reference to 'sqrt'

Fermé
wachbaik Messages postés 55 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 25 septembre 2012 - 7 nov. 2009 à 00:55
 phenix - 26 juil. 2014 à 09:00
bonsoir tous le monde
Voila j'essaye de ciompiler un petit programme en C et à chaque et j'ai un problème de compilation avec la fonction sqrt du genre : "undefined reference to sqrt"
malgré que j'ai mis le #include <math.h>
Merci pour votre aide
A voir également:

6 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 147
7 nov. 2009 à 01:09
Sous Windoze, je ne sais pas... mais avec gcc et Linux, il ne suffit pas de mettre 'math.h' (ce qui résoud la compilation) il faut aussi préciser la bibliothèque mathématique ('- lm' pour résoudre le 'linkage'), ce qui est logique.
Bonne continuation.
6
Étrange !

pourtant sqrt fait bien partie du modèle standard :)

pourrais-tu nou smontrer la ligne de code qui appelle sqrt ainsi que les définitions des variables.

Merci et bonne soirée en attendant
0
wachbaik Messages postés 55 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 25 septembre 2012
7 nov. 2009 à 01:07
#include <stdio.h>
#include <math.h> <-----------------
#include <stdlib.h>

int main (){
int n = 10 , i , j ; <----- déclaration de variables
printf(" introduisez votre chiffre /n");
if (( n = getchar()) != EOF && n != '\n' && n > '0' && n <= '9') { /*
n = n - '0' ;
printf( "les nombres premiers inférieurs à %d", n ) ;

for(i = 2 ; i < sqrt(n) ; i++ ){ <----------------
if(table[i] != -1){
for(j = i+i ; j < n ; j+=i ){
table[j] = -1 ;
}
}
}

return 0 ;
}
0
héhé !
relis donc math.h
tu y verras avec consternation que l'argument de sqrt est un flottant pas un entier :-(
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 147
7 nov. 2009 à 01:17
Cela n'a pas d'importance:
i < sqrt(n) fonctionnera bien; il y aura un 'cast' automatique.
Bonne nuit.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wachbaik Messages postés 55 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 25 septembre 2012
7 nov. 2009 à 01:22
je travaille sous linux
donc la commande est : gcc -o monProg.exe monProg.c
et le linkage je le fait comment de la bibliothèque math
??
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 147
7 nov. 2009 à 01:25
gcc -o monProg.exe monProg.c -lm
Et encore mieux, en demandant au compilateur d'être plus précis dans ses remarques et pourquoi mettre '.exe' (on n'est plus sous Windoze!):
gcc -Wall -o monProg monProg.c -lm
Bonne nuit.
0
wachbaik Messages postés 55 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 25 septembre 2012 > loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017
7 nov. 2009 à 01:27
gracias
bonne nuit
0
mercie bien
0
Il faut que le -lm soit à la fin de la ligne et non au début:
Ok:
gcc -o diehard diehard.o -lm

Ko:
gcc -lm -o diehard diehard.o

Sais pas pourquoi.
0