C中的math.sqrt问题

时间:2011-04-19 05:13:58

标签: c

为什么下面的代码会给我一个错误对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。任何人都可以告诉我出了什么问题。我是否需要再次安装我的库?

3 个答案:

答案 0 :(得分:7)

使用命令行上的-lm标志编译它以链接到数学库。

答案 1 :(得分:3)

默认情况下,Linux上的数学函数没有链接(因为它们相对较少使用)。你需要添加

-lm

到您的编译器行以链接到libm.so,即数学库。

答案 2 :(得分:2)

你在使用GCC吗?任何“未定义的引用”表示存在链接错误。换句话说,您没有正确链接到包含它所抱怨的功能的库。在这种情况下,我相信您可以将-lm添加到链接器标志以链接到数学库。