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

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

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

C
慕妹3242003 2019-10-28 10:50:16
我是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贡献1820条经验 获得超10个赞

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


您需要编译为


gcc test.c  -o test -lm

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


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 907 浏览

添加回答

举报

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