我有一小段代码:
#include <math.h>
int main(void){
pow(2.0,7.0);
//Works
double x = 3.0;
pow(2.0,x);
//Fails with error "undefined reference to 'pow'"
return 0;
}
我已经链接了-lm
在我的 Eclipse 编译器设置中:gcc -O0 -g3 -Wall -lm -c -fmessage-length=0 -MMD -MP -MF"src/pgm.d" -MT"src/pgm.d" -o "src/pgm.o" "../src/pgm.c"
,所以我不确定错误的根源是什么。我没有正确地做什么?
Your -lm
选项不起作用,因为它需要遵循 http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html命令行上的输入源:
在命令中编写此选项的位置会有所不同;链接器按照指定的顺序搜索和处理库和目标文件。因此,foo.o -lz bar.o
搜索图书馆z
文件后foo.o
但之前bar.o
. If bar.o
指的是函数z
,这些函数可能不会被加载。
首先pow(2.0,7.0)
之所以有效,是因为编译器将其计算为常量表达式,并且不需要pow
在运行时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)