题
尝试调用math.h
中的函数时,我收到如下链接错误
undefined reference to sqrt
但我正在做#include <math.h>
我正在使用gcc并编译如下:
gcc -Wall -D_GNU_SOURCE blah.c -o blah
为什么链接器找不到sqrt
的定义?
解决方案
在调用gcc:
时将-lm添加到命令中
gcc -Wall -D_GNU_SOURCE blah.c -o blah -lm
这将告诉链接器链接数学库。包括math.h将告诉编译器像sqrt()这样的数学函数存在,但它们是在一个单独的库中定义的,链接器需要将其与您的可执行文件一起打包。
FreeMemory指出该库名为libm.a。在类Unix系统上,命名库的规则是lib [blah] .a。然后,如果要将它们链接到可执行文件,请使用-l [blah]。
不隶属于 StackOverflow