相关疑难解决方法(0)

429
推荐指数
8
解决办法
17万
查看次数

未定义的引用`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));
}
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

c gcc undefined-reference

117
推荐指数
5
解决办法
18万
查看次数

gcc不会正确包含math.h

这是一个概述我的问题的最小例子

test.c的:

#include <stdio.h>
#include <math.h>

main ()
{
   fmod ( 3, 2 );
}
Run Code Online (Sandbox Code Playgroud)

这是我要编译的命令 test.c

gcc -lm test.c -o test
Run Code Online (Sandbox Code Playgroud)

这是我发出上述命令时得到的输出

/tmp/ccQmRk99.o: In function `main':
test.c:(.text+0x3e): undefined reference to `fmod'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

如果相反,我会使用相同的输出cc.我使用的是以下版本的gcc

gcc-4.6.real (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
Run Code Online (Sandbox Code Playgroud)

我的程序无法编译的任何想法?

c linker gcc static-libraries

19
推荐指数
1
解决办法
6万
查看次数

标签 统计

gcc ×3

c ×2

linker ×2

static-libraries ×1

undefined-reference ×1