童欣 发表于 2023-3-9 20:06:38

看不出为什么未定义,求助大佬

#include <stdio.h>
#include <math.h>

int main()
{
      int z,x;

      printf("请输入数字。\n");
      scanf("%d",&x);
      if(x>1000)
      {
                printf("请重新输入小于1000的数字。\n");
      }
      else
      {

                z= sqrt(x);
                printf("整数部分为%3.0d",z);
      }


      return 0;
}



编译结果:
$ gcc 检查小于1000的数的平方根.c
/tmp/ccIPhU4u.o:在函数‘main’中:
检查小于1000的数的平方根.c:(.text+0x46):对‘sqrt’未定义的引用
collect2: 错误:ld 返回 1

isdkz 发表于 2023-3-9 20:10:52

你没有链接数学库,因为sqrt函数是在数学库中定义的。

你可以在编译命令中加上-lm选项,例如:

gcc 检查小于1000的数的平方根.c-lm。

这样就可以链接数学库并使用sqrt函数了。

isdkz 发表于 2023-3-9 20:11:38

你没有链接数学库,因为sqrt函数是在数学库中定义的。

你可以在编译命令中加上-lm选项,例如:

gcc 检查小于1000的数的平方根.c-lm

这样就可以链接数学库并使用sqrt函数了。

isdkz 发表于 2023-3-9 20:12:05

需要加上 -lm 来链接数学库

gcc 检查小于1000的数的平方根.c-lm

isdkz 发表于 2023-3-9 20:12:48

gcc 检查小于1000的数的平方根.c-lm

童欣 发表于 2023-3-9 20:15:22

isdkz 发表于 2023-3-9 20:12


?大佬没有看懂

sfqxx 发表于 2023-3-9 20:16:58

童欣 发表于 2023-3-9 20:15
?大佬没有看懂

比如gcc 666.c-lm

isdkz 发表于 2023-3-9 20:20:26

童欣 发表于 2023-3-9 20:15
?大佬没有看懂

要加上 -lm 来链接数学库

童欣 发表于 2023-3-9 20:23:48

isdkz 发表于 2023-3-9 20:20
要加上 -lm 来链接数学库

谢谢大佬,明白了
页: [1]
查看完整版本: 看不出为什么未定义,求助大佬