Jestem bardzo nowe do C i mam ten kod:Dlaczego pojawia się błąd "niezdefiniowane odniesienie do sqrt", mimo że dołączam nagłówek math.h?
#include <stdio.h>
#include <math.h>
int main(void)
{
double x = 0.5;
double result = sqrt(x);
printf("The square root of %lf is %lf\n", x, result);
return 0;
}
Ale kiedy mogę skompilować to z:
gcc test.c -o test
pojawia się błąd jak poniżej:
/tmp/cc58XvyX.o: In function `main':
test.c:(.text+0x2f): undefined reference to `sqrt'
collect2: ld returned 1 exit status
Dlaczego to się dzieje? Czy plik sqrt()
nie znajduje się w pliku nagłówkowym sqrt()
? Ten sam błąd występuje z cosh
i innymi funkcjami trygonometrycznymi. Czemu?
A oto kilka spekulacji o tym, dlaczego 'libm' nie jest domyślnie połączony, mimo że zawiera część standardowej biblioteki: http://stackoverflow.com/questions/1033898/why-do-you-have- to-link-the-math-library-in-c –
Jest to duplikat tego: http://stackoverflow.com/q/5248919/694576 – alk