Как скомпилировать программу на C, которая использует math.h?

14

У меня проблемы с файлом заголовка math.h и при использовании функции квадратного корня, как в sqrt(d). Но мой компилятор не поддерживает это. Пожалуйста, сообщите мне об этой проблеме.

Моя версия Ubuntu 2012 года.

Shreya
источник
2
Хотя нам нравятся вопросы программирования - вопрос должен быть связан с Ubuntu - не могли бы вы подробно уточнить, в чем здесь проблема - примеры и т. Д.?
fossfreedom
это как sqrt ((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) ... мой компилятор не поддерживает эту команду
shreya
1
пожалуйста, ответьте, отредактировав свой вопрос. Приведите примеры кода, как вы компилируете, версию ubuntu, версию компилятора, пытались ли вы сделать это на другом компиляторе / дистрибутиве. Что происходит и т.д.?
fossfreedom
1
@shreya Вопросы, касающиеся проблем с кодом, который вы написали, должны описывать конкретную проблему - и включать действительный код для ее воспроизведения - в самом вопросе. Смотрите SSCCE.org для руководства.
Брайам
4
Я действительно не думаю, что это не по теме. Во многих других ОС, таких как Windows, нет необходимости передавать специальную опцию компоновщика для использования математической библиотеки в программах на Си. Даже в некоторых Unix-подобных операционных системах стандартная реализация библиотеки C не требует этого. С этой проблемой сталкиваются многие пользователи, когда переходят на системы GNU / Linux, такие как Ubuntu. Я хотел бы, чтобы вопрос был лучше написан, чтобы включить конкретную ошибку - если мы в конечном итоге обсудим эту тему по теме, возможно, нам следует ее отредактировать - но это не общий вопрос программирования на C, это вопрос о том, как использовать gccв Ubuntu ,
Элия ​​Каган

Ответы:

24

Добавить -lmв конец вашей gccкоманды.

Во всех последних версиях GCC в системах GNU / Linux, таких как Ubuntu, при использовании математической библиотеки вы должны явно ссылаться на нее. Он не связан автоматически с остальной частью стандартной библиотеки C.

Если вы компилируете в командной строке с помощью команды gccили g++, вы могли бы сделать это, поставив -lmв конце команды .

Например: gcc -o foo foo.c -lm

Элия ​​Каган
источник
5

Если вы собираетесь скомпилировать C-программу с библиотекой math.h в LINUX, используя GCC или G ++, вы должны будете использовать опцию –lm после команды compile.

gcc xyz.c -o xyz -lm

Вот,

gcc - команда компилятора (имя компилятора)
xyz.c - имя исходного файла.
-o это опция для указания выходного файла.
xyz - имя выходного файла.
-lm - это возможность снова связать математическую библиотеку ( libm ).

для более подробной информации здесь ссылка, содержащая полную статью о нем.
Компиляция программы на C с помощью math.h в Linux.

Майк
источник
После команды связывания, а не команды компиляции. (Извините за придирки, но правильное понимание помогает понять другие ситуации).
mousomer