Duplicar posible:
Why do you have to link the math library in C?¿Por qué tengo que vincular explícitamente con libm?
Cuando escribo un programa que utiliza las funciones de la biblioteca math.h
, por qué es que tengo que vincular explícitamente a libm
a pesar de que son parte de la biblioteca estándar C? Por ejemplo, cuando quiero usar la función sin()
necesito #include <math.h>
pero también necesito pasar -lm
a GCC. Pero para cualquier otra biblioteca de la biblioteca estándar, no tengo que hacer eso. ¿Por qué la diferencia?
La mayor parte de 'libm' es imposible de alinear a menos que el límite de su función en línea sea de varios KB o haya habilitado un hack como' -ffast-math' que permita al compilador generar código incorrecto pero rápido. –
Bueno, en x86 seno y coseno se implementan dentro de la FPU y se puede acceder con una sola instrucción, por lo que entrando en línea tiene mucho sentido aquí. Un programa que solo usa 'sin()' no necesitará enlazarse con 'libm' en x86, ocultando así la referencia de biblioteca faltante. –
¿Estás seguro de que la instrucción FPU 'sin' puede implementar directamente' sin() '? Si no me equivoco, primero se necesita un argumento de reducción de argumento no trivial. –