我遇到了使用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()是否未定义为标准数学库的一部分(Man页面表明它是数学库的一部分)?
为什么第二个例子不能编译?
答案 0 :(得分:5)
这是因为所需的 libm.a
库未自动链接到可执行文件中。
您必须将 -lm
参数添加到gcc。然后链接器还会将libm.a
链接到您的可执行文件中。