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

C Discussion :

Erreur incompréhensible: undefined reference to `floor'


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Points : 85
    Points
    85
    Par défaut Erreur incompréhensible: undefined reference to `floor'
    Bonjour

    Lorsque je compile, avec gcc, le code ci-dessous j'obtiens l'erreur suivante:
    undefined reference to `floor'

    Si je commente les deux lignes printf(), l'erreur disparaît.

    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
     
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <stdlib.h>
    #include <regex.h>
    #define LINE_LENTH 31
     
    void test(int const moveSeconds, int startSecond)
    {
    	int tmpSecond = 0;
    	int tmpMinutes = 0;	
     
    	tmpMinutes = (int)floor((startSecond + moveSeconds + tmpSecond) / 60.0);
    	startSecond = 60 - (startSecond + moveSeconds + tmpSecond)%60;
     
    	printf("Tmp Minutes: %d", tmpMinutes);
    	printf("Start Secondes: %d", startSecond);
    }
    Je ne vois pas le problème? Quelqu'un a t-il une solution?

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Le problème persiste-t-il si tu ajoutes l'option "-lm" ?

    Citation Envoyé par man floor
    Notes
    Pour utiliser les fonctions de la bibliothèque mathématique, il ne faut pas oublier d'ajouter l'argument -lm sur la ligne de commande de cc(1) ou ld(1) , lors de l'édition des liens.

  3. #3
    Membre habitué Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Points : 190
    Points
    190
    Par défaut


    Je n'arrive pas à reproduire le problème...
    [WinXP sp3 / Visual 2005 / Eclipse Ganymede / Python 2.6]
    Hadrien

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Anonymouse Voir le message
    Lorsque je compile, avec gcc, le code ci-dessous j'obtiens l'erreur suivante:
    undefined reference to `floor'
    C'est une FAQ. Tu as oublié d'ajouter la bibliothèque mathématique à ton projet.
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par mabu Voir le message
    Bonjour,
    Le problème persiste-t-il si tu ajoutes l'option "-lm" ?
    Tu as raison. Honte à moi de ne pas avoir consulter le manuel. A ma décharge, toutefois, celui-ci n'est pas installé sur ma machine.

    Merci à tous

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par sopsag Voir le message
    Je n'arrive pas à reproduire le problème...
    « Undefined reference to floor », ça signifie « référence indéfinie à floor ». Ça veut dire que, bien que floor() soit déclaré dans <math.h>, au moment de finaliser la compilation, gcc ne trouve pas floor() et ne peut donc pas y relier ton programme.

    C'est normal car cette fonction se trouve dans une bibliothèque, la libm, que tu n'avais pas lié à ton programme. La commande que t'a donnée Mabu permet de le faire.

    Si le problème disparaît quand tu commentes les printf(), c'est probablement parce que c'est le seul endroit où tu utilises les variables que tu as initialisé avec floor(). Si tu enlèves ces lignes, les variables ne servent plus à rien. Nul besoin dès lors de les initialiser, et par conséquent de faire appel à floor().

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Erreur compilation] Undefined reference
    Par Trademark dans le forum Langage
    Réponses: 2
    Dernier message: 17/12/2011, 10h17
  2. incompréhension: Undefined Reference to
    Par astyan42 dans le forum Débuter
    Réponses: 5
    Dernier message: 02/12/2010, 00h45
  3. Erreur compilation : undefine reference to '_
    Par Darksnakes dans le forum Débuter
    Réponses: 9
    Dernier message: 11/03/2009, 11h49
  4. Réponses: 2
    Dernier message: 27/03/2008, 16h57
  5. Erreur compilation "undefined reference to "
    Par ViRouF dans le forum C++
    Réponses: 5
    Dernier message: 02/03/2007, 14h55

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