2009-05-20 9 views
1

Ich habe Probleme mit der Verwendung von log10f(). Ich kompiliere das Programm unter Linux (2.6.28-11-generic) und mit gcc (3.4.6).Ist log10f() nicht Teil der Standard-Math-Bibliothek?

Die folgende Quelle kompiliert und druckt 1,000000 bei Ausführung.

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

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

während die unter einem nicht der Fall ist, und Verbindungsfehler wirft:

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

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

Fehler: Undefinierte Bezug auf log10f

  1. Ist log10f() nicht als Teil definiert Standard-Math-Bibliothek (Man-Seiten zeigen an, dass es Teil der Math-Bibliothek ist)?

  2. Warum wird das zweite Beispiel nicht kompiliert?

Antwort

5

Das ist, weil die erforderliche libm.a Bibliothek nicht in die ausführbare Datei automatisch verknüpft.

Sie müssen den Parameter -lm zu gcc hinzufügen. Dann wird der Linker auch libm.a in Ihre ausführbare Datei verknüpfen.

+0

DR, Danke, es funktioniert. Für das erste Beispiel habe ich nicht -lm-Option verwendet, immer noch kompiliert, das ist rätselhaft für mich. – pgm

+0

Das klingt, als wäre der Verknüpfungsschritt nicht beim ersten Mal ausgeführt worden. –

Verwandte Themen