математическая проблема в C - PullRequest
1 голос
/ 19 апреля 2011

Почему следующий код выдает ошибку неопределенная ссылка на sqrt .

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void)
{
    double i = 25;
    printf("\nSquare root of %d = %d",i,sqrt(i));
    return 0;
}

Я включил math.h , и я использую Debian. Может кто-нибудь сказать мне, что происходит не так. Мне нужно установить мои библиотеки снова или что-то?

Ответы [ 3 ]

7 голосов
/ 19 апреля 2011

Скомпилируйте его с флагом -lm в командной строке, чтобы связать его с библиотекой математики.

3 голосов
/ 19 апреля 2011

Математические функции по умолчанию не связаны в Linux (так как они используются сравнительно редко). Вам нужно добавить

-lm

к вашей строке компилятора для ссылки на libm.so, библиотеку математики.

2 голосов
/ 19 апреля 2011

Вы используете GCC? Любая «неопределенная ссылка» означает, что существует ошибка связи. Другими словами, вы неправильно связываетесь с библиотекой, содержащей функцию, на которую она жалуется. В этом случае, я полагаю, вы можете добавить -lm к своим флагам компоновщика для ссылки на математическую библиотеку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...