我很新的C和我有這樣的代碼:即使我包含math.h頭文件,爲什麼會出現「undefined reference to sqrt」錯誤?
#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;
}
但是,當我編譯這個用:
gcc test.c -o test
我得到這樣的錯誤:
/tmp/cc58XvyX.o: In function `main':
test.c:(.text+0x2f): undefined reference to `sqrt'
collect2: ld returned 1 exit status
爲什麼會發生? sqrt()
不在math.h
頭文件中?我得到與cosh
和其他三角函數相同的錯誤。爲什麼?
這裏有一些猜測爲什麼爲什麼'libm'沒有默認連接,即使它包含標準庫的一部分:http://stackoverflow.com/questions/1033898/why-do-you-have- to-link-the-math-library-in-c –
這對這個是重複的:http://stackoverflow.com/q/5248919/694576 – alk