我正在努力学习足够的c以满足我偶尔需要编写的简单程序来回答我所遇到的具体问题。我一直在关注一个教程并使用Geany来方便使用。相反,我似乎无法运行最简单的程序。这是我的源代码:
#include <stdio.h>
#include <math.h>
int main(int argc, char **argv)
{
int x, y;
double c, sqr_c;
for (x = 10; x <= 31; x++)
{
for (y = 10; y <= 31; y++)
{
c = 1000 * x * x + y * y;
sqr_c = sqrt(c);
printf ("%f\n", sqr_c);
}
}
return 0;
}
它编译很好(gcc -c)但是当我尝试构建可执行文件时,我得到:
gcc "concsqr.c" -Wall -o "concsqr" (in directory: /home/chip)
/tmp/cccSmdZS.o: In function `main':
concsqr.c:(.text+0x4b): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status
Compilation failed.
我读到了一些关于确保链接器可以找到定义了sqrt()的库的内容,但我不知道如何做到这一点,并且它不会在标准位置吗?链接器为什么不知道它在哪里?它是c。
的标准库答案 0 :(得分:0)
您必须尝试使用-lm
标记编译程序,因为libm.so
是数学库,-l
标记添加lib
前缀和{{1} }或.a
后缀。
.so