为什么下面的代码会给我一个错误对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。任何人都可以告诉我出了什么问题。我是否需要再次安装我的库?
答案 0 :(得分:7)
使用命令行上的-lm标志编译它以链接到数学库。
答案 1 :(得分:3)
默认情况下,Linux上的数学函数没有链接(因为它们相对较少使用)。你需要添加
-lm
到您的编译器行以链接到libm.so,即数学库。
答案 2 :(得分:2)
你在使用GCC吗?任何“未定义的引用”表示存在链接错误。换句话说,您没有正确链接到包含它所抱怨的功能的库。在这种情况下,我相信您可以将-lm添加到链接器标志以链接到数学库。