我是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。
- 3 回答
- 0 关注
- 907 浏览
添加回答
举报
0/150
提交
取消