刚开始学习C的时候,我在C教程网站上找到了这个示例程序,编译时出现错误。
这是程序,根据用户输入计算数字的平方根:
#include <stdio.h>
#include <math.h>
int main()
{
double num, root;
/* Input a number from user */
printf("Enter any number to find square root: ");
scanf("%lf", &num);
/* Calculate square root of num */
root = sqrt(num);
/* Print the resultant value */
printf("Square root of %.2lf = %.2lf", num, root);
return 0;
}
我在Ubuntu中使用gcc
进行编译:
gcc -o square_root square_root.c
这是错误:
/tmp/cc9Z3NCn.o: In function `main':
square_root.c:(.text+0x4e): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status
我在做什么错?我可以看到数学模块已导入,为什么会出现错误?
同样,我今天才开始学习C,我只想弄清楚如何运行程序。谢谢您的耐心等待,因为它一定很明显。
答案 0 :(得分:2)
sqrt
位于数学库中,因此您需要告诉您的程序使用-lm
进行链接:
gcc -o square_root square_root.c -lm
答案 1 :(得分:1)
您需要使用-lm标志进行编译
gcc -o square_root square_root.c -lm