Referencia indefinida a `pow' y `floor'
Estoy intentando hacer una calculadora de Fibonacci simple en C pero al compilar gcc
me dice que me faltan las funciones pow y floor. ¿Qué ocurre?
Código:
#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));
}
Producción:
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
Aceptado
Necesitas compilar con el indicador de enlace -lm
, así:
gcc fib.c -lm -o fibo
Esto le indicará a gcc que vincule su código con la biblioteca matemática. Sólo asegúrate de poner la bandera después de los objetos que deseas vincular.
Agregue -lm a sus opciones de enlace, ya que pow() y floor() son parte de la biblioteca matemática:
gcc fib.c -o fibo -lm