未定义的引用`pow'和`floor'

未定义的引用`pow'和`floor'

我正在尝试在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


芜湖不芜
浏览 1255回答 3
3回答

呼如林

您需要使用链接标志进行编译-lm,如下所示:gcc&nbsp;fib.c&nbsp;-lm&nbsp;-o&nbsp;fibo这将告诉gcc将您的代码与数学库链接。只需确保将标志放在要链接的对象之后。

30秒到达战场

添加-lm到您的链接选项,因为pow()和floor()是数学库的一部分:gcc&nbsp;fib.c&nbsp;-o&nbsp;fibo&nbsp;-lm

ABOUTYOU

为了以后阅读本文的任何人的利益,你需要链接它,因为弗雷德说:gcc fib.c -lm -o fibo找出需要链接的库的一个好方法是检查手册页是否存在。例如,man pow并且man floor都会告诉你:链接-lm。
打开App,查看更多内容
随时随地看视频慕课网APP