Tôi rất mới đến C và tôi có mã này:Tại sao tôi nhận được lỗi "không xác định tham chiếu đến sqrt" mặc dù tôi bao gồm tiêu đề 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;
}
Nhưng khi tôi biên dịch này với:
gcc test.c -o test
tôi nhận được một lỗi như thế này:
/tmp/cc58XvyX.o: In function `main':
test.c:(.text+0x2f): undefined reference to `sqrt'
collect2: ld returned 1 exit status
Lý do tại sao điều này xảy ra? Có phải sqrt()
không có trong tệp tiêu đề math.h
không? Tôi gặp lỗi tương tự với cosh
và các hàm lượng giác khác. Tại sao?
Và đây là một số suy đoán tại sao về lý do tại sao 'libm' không được liên kết theo mặc định mặc dù nó chứa một phần của thư viện chuẩn: http://stackoverflow.com/questions/1033898/why-do-you-have- to-link-the-math-library-in-c –
Nó trùng lặp với cái này: http://stackoverflow.com/q/5248919/694576 – alk