1. ホーム
  2. c

[解決済み] pow' と `floor' への未定義の参照

2022-02-07 08:42:28

質問

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 にあなたのコードを math lib に対してリンクするよう指示します。このとき、必ず の後に をリンクさせたいオブジェクトを指定します。