2009-05-20 35 views
1

我有使用log10f()的问题。 我正在编译Linux(2.6.28-11-generic)和使用gcc(3.4.6)的程序。是否log10f()不是标准数学库的一部分?

以下源代码在执行时编译并打印1.000000。

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

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

而下方的一个不和抛出了链接错误:

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

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

错误:未定义参照log10f

  1. 是对log10f()没有被定义为的一部分标准的数学库(Man页面表明它是数学库的一部分)?

  2. 为什么第二个例子不能编译?

回答

5

这是因为需要libm.a库不会自动链接到可执行文件。

你必须在-lm参数添加到GCC。然后链接器也将libm.a链接到您的可执行文件中。

+0

DR,谢谢你的工作。对于第一个例子,我没有使用-lm选项,仍然编译,这令我感到困惑。 – pgm 2009-05-20 06:22:05

相关问题