value *= pow(10, 3); // this one compiles
value *= pow(10, aVar); // this one produces this error:
//Number.c:(.text+0x469): undefined reference to `pow'
aVar是一个int变量。
可能是什么?
我正在使用makefile。我正在练习"make lexanc"我的生成文件如下:
lexanc: lexandr.o lexanc.o scanner.o printtoken.o token.h lexan.h Number.o
cc -o lexanc -lm lexandr.o lexanc.o scanner.o printtoken.o Number.o
...
Number.o: Number.c Number.h lexan.h
cc -c Number.c
lexanc.o: lexanc.c token.h lexan.h Number.h
cc -c lexanc.c
...
我的抄送版本是:laygr@xxx$cc--版本cc(Ubuntu/Linaro 4.6.3-1ubuntu5(4.6.3
库应该位于编译选项中的所有对象之后。更改为:
lexanc: lexandr.o lexanc.o scanner.o printtoken.o token.h lexan.h Number.o
cc -o lexanc lexandr.o lexanc.o scanner.o printtoken.o Number.o -lm
注释-lm
已移动到末尾。
您是否包括
math.h
?尝试将-Wall -ansi -pedantic
作为命令行参数添加到C编译器中。通常在某个地方有CFLAGS
的定义
编辑
这其实是一个我完全忘记的常见问题。将-lm
移动到参数列表的末尾。更具体地说,它需要在所有对象之后。查看此问题的答案以了解更多详细信息。