11

我正在使用 Linux、Ubuntu 12.04(Precise Pangolin)和 Geany 进行编码。在我使用 sqrtf 命令找到浮点数的平方根之前,我用 C 编写的代码运行良好。

错误:HAC3.c:(.text+0xfd7): undefined reference to `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,这样就不会再出现了?

4

3 回答 3

12

转到Build-> Set Build Commands,然后C commands单击空标签,它将让您指定一个新标签(命名Link)。输入它gcc -Wall -o "%e" "%f" -lm- where-lm将告诉它将math库链接到您的应用程序。单击OK

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

于 2013-06-07T01:35:25.173 回答
9

您需要链接-lm以提供数学函数。

于 2013-06-07T01:03:13.530 回答
1

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

于 2019-02-17T08:43:30.623 回答