Acabo de descubrir que gcc necesita la bandera -lm
para compilar un programa que refiere una función de la biblioteca matemática. Me pregunto por qué no se necesita un marcador de enlace explícito al compilar programas que contienen otras bibliotecas, como la biblioteca de tiempo. Si escribo un programa donde se llama a la función time()
, se compilará sin problemas, incluso sin opciones de vinculación. Pero un programa con la biblioteca matemática involucrada simplemente no funcionará sin la bandera -lm
.gcc: ¿por qué la bandera -lm es necesaria para vincular la biblioteca matemática?
¿Puede alguien explicar el motivo de este comportamiento? Gracias por tu tiempo.
Razones históricas raras, pero principalmente porque así es: http://stackoverflow.com/questions/1033898/why-do-you-have-to-link-the-math-library-in-c – birryree