sqrtf未定义对c中“sqrtf”的引用

时间:2013-06-07 01:02:06

标签: c linux math.h geany

您好我正在使用linux 12.04和geany进行编码。我在C中编写的代码完全正常,直到我使用sqrtf命令查找浮点的平方根。 错误:HAC3.c :(。text + 0xfd7):未定义对`sqrtf'的引用。

我正在使用sqrtf的代码部分:

float syn(float *a, float *b, int dimensions)
{
    float similarity=0;
    float sumup=0;
    float sumdown=0;
    float as=0;
    float bs=0;
    int i;
    for(i=0; i<dimensions; i++)
    {
        sumup = sumup + a[i] * b[i];
        as = as + a[i] * a[i];
        bs = bs + b[i] * b[i];
    }
    sumdown = sqrtf(as) * sqrtf(bs);
    similarity = sumup / sumdown;
    return similarity;
}

我包括math.h但这似乎不是问题。 所以我想知道有没有办法修复geany所以这不会再出现? 我知之甚少,所以尽量解释一下。

3 个答案:

答案 0 :(得分:11)

转到Build - &gt; Set Build Commands然后在C commands下点击空标签,它会让您指定一个新标签(将其命名为Link)。输入gcc -Wall -o "%e" "%f" -lm - 其中-lm会告诉它将math库链接到您的应用。点击OK

然后点击Build并选择新创建的标签 - Link。这应该为你做。

答案 1 :(得分:9)

您需要与-lm关联才能提供数学函数。

答案 2 :(得分:0)

除了这里的许多很好的答案之外,支持<math.h>的C99版本的命令的可移植形式为specified by POSIX,称为c99 -l m。话虽如此,每个重要的Linux编译器都支持-lm