Undefined reference to 'sqrt'

wachbaik Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   -  
 phenix -
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   Statut Membre Dernière intervention   148
 
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
Séquelle
 
É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   Statut Membre Dernière intervention  
 
#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
Séquelle
 
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   Statut Membre Dernière intervention   148
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   148
 
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   Statut Membre Dernière intervention   > loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention  
 
gracias
bonne nuit
0
stealth
 
mercie bien
0
phenix
 
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