C程序编译错误:未定义的引用

时间:2011-07-17 19:20:53

标签: c gcc

我无法编译以下简单的C代码,我不知道为什么。

#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
#include <math.h>
int main(){
     double result;
     result = cos(0.5);
     printf("asin(0.5) is %f\n", result);
     return 0;
}

我尝试编译后收到的错误消息是 -

In function 

'main':
test.c:(.text+0xlc): undefined reference to 'cos'
collect2: ld

 returned 1 exit status

2 个答案:

答案 0 :(得分:14)

您需要链接数学库(-lm)。

gcc -Wall -Wextra -o test test.c -lm

请参阅此C FAQ

答案 1 :(得分:0)

通常,每当您收到未定义的引用错误时,由于编译器无法找到您的函数定义。所以它可能是你的函数(你没有正确输入函数的拼写,所以你会得到这个错误)或者可能是你在这种情况下遇到的内置函数。
在编制时需要探索各种图书馆及其连接。

无论何时使用数学函数,都使用-lm(l代表链接,m代表数学)
在pthread内置函数中使用-lpthread
等等 ... 在这种情况下确实使用-lm

gcc -lm test.c

将能够编译您的程序。