2009-05-20 8 views
1

J'ai des problèmes avec l'utilisation de log10f(). Je compile le programme sous Linux (2.6.28-11-generic) et en utilisant gcc (3.4.6).Est-ce que log10f() ne fait pas partie de la bibliothèque mathématique standard?

La source suivante compile et imprime 1.000000 à l'exécution.

#include <stdio.h> 
#include <math.h> 

int main() { 
    printf("%f\n", log10f(10)); 
    return 0; 
} 

alors que le ci-dessous un ne fonctionne pas et vomit erreur de lien:

#include <stdio.h> 
#include <math.h> 

int main() { 
    printf("%f\n", log10f(100)); 
    return 0; 
} 

erreur: référence non définie à log10f

  1. Est-ce le log10f() ne sont pas définis dans le cadre de bibliothèque mathématique standard (Les pages man indiquent que cela fait partie de la bibliothèque mathématique)?

  2. Pourquoi est-ce que le deuxième exemple ne compile pas?

Répondre

5

C'est parce que la bibliothèque requise libm.a n'est pas lié à l'exécutable automatiquement.

Le paramètre -lm doit être ajouté à gcc. Ensuite, l'éditeur de liens liera également libm.a dans votre fichier exécutable.

+0

DR, merci ça marche. Pour le premier exemple, je n'ai pas utilisé l'option -lm, toujours compilé, cela me laisse perplexe. – pgm

+0

Cela ressemble à l'étape de liaison n'a pas été exécutée la première fois. –

Questions connexes