2012-05-04 3 views
14

Что делает -lm вариант сделать в g ++ и когда это необходимо?Что делает опция -lm в g ++?

Есть ли полное описание вариантов g ++?

+1

В документации GCC (man gcc) есть полный список. – Mat

+0

Дубликат [sqrt из math.h вызывает ошибку компиляции] (http://stackoverflow.com/questions/1711915/sqrt-from-math-h-causes-compile-error). Также связано с [gcc: зачем нужен флаг -lm для связывания математической библиотеки?] (Http://stackoverflow.com/questions/4606301/gcc-why-the-lm-flag-is-needed-to-link -the-math-library) – Abhijit

+0

Возможный дубликат [Почему я получаю "неопределенную ссылку на' sqrt '"Ошибка, даже если я включаю заголовок math.h?] (http://stackoverflow.com/questions/10409032/ почему-im-получение-undefined-reference-to-sqrt-error-even-but-i-include-ma) –

ответ

19

Это вариант компоновщика. Он сообщает компоновщику ссылку с (-l) библиотекой m (libm.so/dll). Это математическая библиотека. Вам это часто нужно, если вы #include <math.h>.

6

Опция ничего не делает для g++: ссылаясь на ответ https://stackoverflow.com/a/1033940/1143274libstdc++libm требует, так что это будет всегда быть связаны g++.

Однако, есть и какое-то автоматическое поведение связующего для gcc, исследовал на эту тему http://www.linuxforums.org/forum/programming-scripting/125526-c-gcc-math-h-lm.html, который я не могу найти ответ, куда что приходит и какие библиотеки он относится к ...