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。 我擅长“制造lexanc” 我的makefile看起来像这样:
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
...
我的cc版本是: laygr @ xxx $ cc - 版本 cc(Ubuntu / Linaro 4.6.3-1ubuntu5)4.6.3
答案 0 :(得分:6)
库应该位于编译选项中的所有对象之后。将其更改为:
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
已移至最后。
答案 1 :(得分:2)
你是否包括 math.h
?尝试将-Wall -ansi -pedantic
作为命令行参数添加到C编译器。为此目的,通常会在某处定义CFLAGS
。
修改强>
这实际上是我完全忘记的常见问题。将-lm
移动到参数列表的末尾。更具体地说,它需要在之后所有对象。有关详细信息,请查看answers to this question。