我试图用C语言制作一个简单的斐波那契计算器,但是当编译gcc时,它告诉我我缺少pow和floor函数.发生了什么?

代码:

#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

推荐答案

您需要使用链接标志-lm进行编译,如下所示:

gcc fib.c -lm -o fibo

这将告诉GCC将您的代码链接到数学库.只要确保将标志after放入您要链接的对象即可.

C++相关问答推荐

变量的const视图是否定义良好?

有效地计算由一组点构成的等边三角形和等腰三角形的数量

常数函数指针优化

如何在C宏中确定Windows主目录?

丑陋的三重间接:可扩展的缓冲区管理 struct

ATmega328P EEPROM未写入

如何创建一个C程序来存储5种动物的名字,并在用户 Select 其中任何一种动物时打印内存地址?

在C语言中,在数学运算过程中,为什么浮点数在变量中的行为不同

二进制计算器与gmp

向上强制转换C中的数值类型总是可逆的吗?

#定义SSL_CONNECTION_NO_CONST

C代码在字符串中删除不区分大小写的子字符串的问题

在进程之间重定向输出和输入流的问题

为什么realloc函数在此代码中修改变量?

如何逐位读取二进制文件?

如何在MSVC中使用intSafe.h函数?

生成的头文件不包括用户定义的文件

C: NULL>;NULL总是false?

在 C23 之前如何对空指针使用nullptr?

当循环变量在溢出时未定义时,可以进行哪些优化?