未定義的引用`pow'和`floor'我正在嘗試在C中制作一個簡單的斐波那契計算器,但在編譯時gcc告訴我,我錯過了戰(zhàn)俘和地板功能。怎么了?碼:#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
3 回答

呼如林
TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊
您需要使用鏈接標(biāo)志進(jìn)行編譯-lm
,如下所示:
gcc fib.c -lm -o fibo
這將告訴gcc將您的代碼與數(shù)學(xué)庫鏈接。只需確保將標(biāo)志放在要鏈接的對象之后。

30秒到達(dá)戰(zhàn)場
TA貢獻(xiàn)1828條經(jīng)驗 獲得超6個贊
添加-lm到您的鏈接選項,因為pow()和floor()是數(shù)學(xué)庫的一部分:
gcc fib.c -o fibo -lm

ABOUTYOU
TA貢獻(xiàn)1812條經(jīng)驗 獲得超5個贊
為了以后閱讀本文的任何人的利益,你需要鏈接它,因為弗雷德說:
gcc?fib.c?-lm?-o?fibo
找出需要鏈接的庫的一個好方法是檢查手冊頁是否存在。例如,man pow
并且man floor
都會告訴你:
鏈接-lm
。
- 3 回答
- 0 關(guān)注
- 1282 瀏覽
添加回答
舉報
0/150
提交
取消