debian11上gcc编译不通过math库函数

安装gcc的时候直接用的 apt-get install build-essential
test.c程序用到math.h头文件下面的log函数和sqrt函数,在编译那一步就报错说没有声明函数,是不是math库损坏了呀?不过stdio.h下面的函数都能正常使用。
报错内容:
text.c:(.text+0x29): undefined reference to ‘sqrt’
collect2: error: ld returned 1 exit status

友友们,如果是math库出问题的话要怎么解决呢?csdn和百度都没有找到方法

加一个 -lm,比如说 gcc test.c -o test -lm
这个让gcc在链接的时候链接到libm这个库(-lfoo 就表示链接到 libfoo 这个库),sqrt函数在这个库里。

2 个赞

谢谢,问题解决了。
但是之前我在win10上面的虚拟机装过red的linux系统,下载了gcc之后,比如同样是这个test.c文件,直接就可以 gcc test.c && ./a.out 直接运行。是不是前面那个 gcc test.c 是把后面 -lm 这类命令省略了呢?还是说是因为系统和支持的问题?

好像和编译器版本有关系。有些gcc默认带-lm,就不需要加。