我正试着用C语言做一个简单的斐波纳契计算器,但是在编译时,gcc告诉我我遗漏了幂和底函数。怎么了?
代码:
#include <stdio.h>
#include <math.h>
int fibo(int n);
int main() {
printf("Fib(4) = %d", fibo(4));
return 0;
}
int fibo(int n) {
double phi = 1.61803399;
return (int)(floor((float)(pow(phi, n) / sqrt(5)) + .5f));
}输出:
gab@testvm:~/work/c/fibo$ gcc fib.c -o fibo
/tmp/ccNSjm4q.o: In function `fibo':
fib.c:(.text+0x4a): undefined reference to `pow'
fib.c:(.text+0x68): undefined reference to `floor'
collect2: ld returned 1 exit status发布于 2011-12-30 01:52:40
您需要使用链接标志-lm进行编译,如下所示:
gcc fib.c -lm -o fibo这将告诉gcc将您的代码链接到数学库。只需确保将标志放在要链接的对象的后面即可。
发布于 2011-12-30 01:52:53
将-lm添加到链接选项中,因为pow()和floor()是数学库的一部分:
gcc fib.c -o fibo -lm发布于 2015-05-15 19:36:46
为了方便以后阅读本文的任何人,您需要像Fred所说的那样链接到它:
gcc fib.c -lm -o fibo找出需要链接的库的一个好方法是查看手册页。例如,man pow和man floor都会告诉您:
链接到-lm。
C程序设计中连接数学库的说明-- Linking in C
https://stackoverflow.com/questions/8671366
复制相似问题