Undefined reference to 'sqrt'

wachbaik Messages postés 60 Statut Membre -  
 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
Configuration: Windows Vista
Firefox 3.5.4

6 réponses

  1. loupius Messages postés 789 Statut Membre 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
  2. 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
  3. wachbaik Messages postés 60 Statut Membre
     
    #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
  4. 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
    1. loupius Messages postés 789 Statut Membre 148
       
      Cela n'a pas d'importance:
      i < sqrt(n) fonctionnera bien; il y aura un 'cast' automatique.
      Bonne nuit.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. wachbaik Messages postés 60 Statut Membre
     
    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
    1. loupius Messages postés 789 Statut Membre 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
      1. wachbaik Messages postés 60 Statut Membre > loupius Messages postés 789 Statut Membre
         
        gracias
        bonne nuit
        0
    2. stealth
       
      mercie bien
      0
  7. 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