为了账号安全,请及时绑定邮箱和手机立即绑定

即使包含math.h标头,为什么也会出现“对sqrt的未定义引用”错误?

即使包含math.h标头,为什么也会出现“对sqrt的未定义引用”错误?

C
一只名叫tom的猫 2019-12-11 16:09:27
我是C语言的新手,我有以下代码:#include <stdio.h>#include <math.h>int main(void){  double x = 0.5;  double result = sqrt(x);  printf("The square root of %lf is %lf\n", x, result);  return 0;}但是当我用以下命令编译时:gcc test.c -o test我收到这样的错误:/tmp/cc58XvyX.o: In function `main':test.c:(.text+0x2f): undefined reference to `sqrt'collect2: ld returned 1 exit status为什么会这样?是sqrt()不是在math.h头文件?我cosh和其他三角函数遇到相同的错误。为什么?
查看完整描述

3 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

您需要使用链接-lm器选项链接


您需要编译为


gcc test.c  -o test -lm

历史上,默认情况下,gcc(非g ++)在链接时不会包含数学函数。它还已从libc分离到单独的库libm中。要使用这些功能,你必须通知链接到包含链接库-l链接选项,后跟库名m这样-lm。



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 426 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信