我在使用log10f()时遇到问题。
我正在Linux(2.6.28-11-generic)上编译该程序,并使用gcc(3.4.6)。

以下源代码将在执行时编译并打印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的引用


log10f()是否未定义为标准数学库的一部分(手册页指示它是数学库的一部分)?
为什么第二个示例无法编译?

最佳答案

这是因为所需的libm.a库没有自动链接到可执行文件中。

您必须将-lm参数添加到gcc。然后,链接器还将libm.a链接到您的可执行文件中。

10-08 16:35