IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

undefined reference to `sqrt'


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 11
    Points
    11
    Par défaut undefined reference to `sqrt'
    Bonjour à tous,
    Je suis très débutant au niveau programmation et j'ai un gros problème: impossible de compiler mon application en C. j'utilise kDevelop 3.5.1 avec gcc 4.2.3 sous Debian.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #define NFOIS 5
     
    int main(int argc, char *argv[])
    {
        /* Initialisation des variables */
        int i;
        float x , racx;
     
        /* Le logiciel est poli: il dit bonjour ;) */
        printf ("Bonjour\n");
        printf ("Je vais vous calculer %d racines carrées\n", NFOIS);
     
        for (i=0; i<NFOIS;i++)
        {
            /* Demande à l'utilisateur les données */
     
            printf ("Donnez un chiffre :");
            scanf ("%f", &x);
        if (x < 0.0)
            printf ("Le nombre %f ne possède pas de racines carrée\n", x);
        else {
            racx = sqrt (x);
            printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ; }}
        printf ("Travail terminé - Salut");
        return 0;
    }
    Comme précisé sur un autre article du forum, j'ai compilé avec gcc en ajoutant l'argument -lm mais rien n'y fait. la sortie me dit toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    cd '/home/simon/Dev/HelloMain/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" LC_MESSAGES="C" LC_CTYPE="C" make -k 
    make all-recursive
    Making all in src
    cd /home/simon/Dev/HelloMain && /bin/bash /home/simon/Dev/HelloMain/missing --run automake-1.10 --gnu src/Makefile
    cd .. && /bin/bash ./config.status src/Makefile depfiles
    config.status: creating src/Makefile
    config.status: executing depfiles commands
    linking hellomain (gcc)
    hellomain.o: In function `main':
    /home/simon/Dev/HelloMain/src/hellomain.c:30: undefined reference to `sqrt'
    collect2: ld returned 1 exit status
    make[2]: *** [hellomain] Error 1
    make[2]: Target `all' not remade because of errors.
    make[1]: *** [all-recursive] Error 1
    make: *** [all] Error 2
    *** Exited with status: 2 ***
    Le fichier math.h existe bien, j'ai vérifié. Que faut-il faire ?
    Merci d'avance
    Simon

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Le soucis c'est qu'on ne voit pas la ligne de compilation dans ton exemple, tente une compilation directement en ligne de commande sans passer par ton éditeur et dis nous ce qu'il en est, car je me demande si tu ne t'es pas trompé sur l'endroit où placer "-lm".

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 11
    Points
    11
    Par défaut Commande pour la compilation
    J'ai effectué la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc hellomain.c-o -lm hellomain
    De toute façon, je suis obligé de compiler à la main car j'utilise kDevelop comme un simple éditeur de code source avec coloration syntaxique; je n'exploite pas la gestion de projet et la généraration automatique de makefile car je compte écrire des applications recompilable sur plusieurs OS différend (le code où j'ai le problème fonctionne déjà sans problème sans Mac).
    Simon

  4. #4
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o hellomain hellomain.c -lm

Discussions similaires

  1. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    Réponses: 14
    Dernier message: 06/08/2012, 13h42
  2. Undefined reference to 'sqrt'
    Par dyngry dans le forum C
    Réponses: 1
    Dernier message: 07/11/2009, 01h33
  3. Compilation de xmms : undefined reference to...
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/02/2005, 19h05
  4. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/06/2004, 20h38
  5. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 07h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo