编译错误“ undefined reference to ‘sqrt‘ ”解决方法
明明使用sqrt()
函数时我们已经引用了头文件:#include <math.h>
,编译器还是提示找不到对应的库函数。
原因分析:
包含了math.h头文件也报错,是因为gcc默认指定头文件对应的库文件中不包括math库,即math库不是gcc默认指定的库文件,编译时需要将gcc手动指定到math库。
解决方案:
我们分别从gcc编译,cmake文件、makefile中解决编译中出现的undefined reference to ‘sqrt‘问题。
gcc直接编译
gcc编译的时候可以直接加上-lm选项,-l为指定库,m为math库。例如将 tutorial.c编译成可执行文件Tutorial,则完整编译语句为:
gcc -o Tutorial tutorial.c -lm: