Problema al compilar

Imagen de Al
Al
0 puntos

Tengo un problema muy tonto. Al compilar este código...

#include
#include

int main()
{
double a, b, numero;

numero=0;
a=2;
b=3;

numero = pow(a,b);

printf("\n%f\n\n", numero);
}

...me dice que...

/tmp/ccMPVGdf.o: En la función `main':
a.c:(.text+0x41): referencia a `pow' sin definir
collect2: ld devolvió el estado de salida 1

... Lo raro es que si pongo...

numero = pow(2,3);

...ya sí compila y se ejecuta bien. ¿¿¿???

Imagen de Al
+1
0
-1

Yo mismo me respondo, al compilar faltaba añadir -lm para enlazar con la librería math. La duda que me surje es ¿por qué hay que hacer eso para usar una función de esta librería y no hay que hacerlo para usar el printf por ejemplo de stdio?

+1
0
-1
Imagen de benjavalero
+1
0
-1

Pues es raro, sí. No sé, prueba a compilar sin enlazar con la biblioteca math y con pow(2.0, 3.0), para que el compilador los interprete como reales. Más por curiosidad que otra cosa. Doy por supuesto que las bibliotecas que omites en los include son stdio y math. Yo nunca he tenido que enlazar las bibliotecas estándar. Doy también por supuesto que tienes instalado el paquete build-essential.

+1
0
-1
Imagen de Anónimo
+1
0
-1

Sí, las bibliotecas que no salieron en el mensaje son esas dos que dices.

Creo que no tengo instalado ese paquete, al menos yo no lo he instalado. Yo instalé un paquete de librerías que encontré por ahí, ya que Ubuntu me venía sin nada. ¿Qué es ese paquete y cómo lo instalo?

Gracias.

+1
0
-1