2012-05-04 12 views
14

¿Qué hace la opción -lm en g ++ y cuándo es necesario?¿Qué hace la opción -lm en g ++?

¿Hay una descripción completa de las opciones de g ++?

+1

Hay una lista completa en la documentación de GCC (man gcc). – Mat

+0

El duplicado de [sqrt de math.h provoca el error de compilación] (http://stackoverflow.com/questions/1711915/sqrt-from-math-h-causes-compile-error). También relacionado con [gcc: ¿por qué la bandera -lm es necesaria para vincular la biblioteca matemática?] (Http://stackoverflow.com/questions/4606301/gcc-why-the-lm-flag-is-needed-to-link -the-math-library) – Abhijit

+0

posible duplicado de [¿Por qué estoy recibiendo? referencia indefinida a 'sqrt '" Error, incluso si incluyo el encabezado math.h?] (http://stackoverflow.com/questions/10409032/ why-im-getting-undefined-reference-to-sqrt-error-even-though-i-include-ma) –

Respuesta

19

Esa es una opción de engarce. Le dice al vinculador que enlace con (-l) la biblioteca m (libm.so/dll). Esa es la biblioteca de matemáticas. A menudo lo necesita si #include <math.h>.

6

La opción no hace nada para g++: refiriéndose a esta respuesta https://stackoverflow.com/a/1033940/1143274libstdc++libm requiere, por lo que siempre estará vinculado por g++.

Sin embargo, también hay algún tipo de comportamiento de enlace automático de gcc, investigado en este hilo http://www.linuxforums.org/forum/programming-scripting/125526-c-gcc-math-h-lm.html que no puedo parecer encontrar una respuesta en cuanto a de dónde viene y qué bibliotecas se aplica a ...

Cuestiones relacionadas