以下代码在 Linux 上引发未定义符号错误。
$ cat rms.c
/* sqrt example */
#include <stdio.h>
#include <math.h>
int main ()
{
double param, result;
param = 1024.0;
result = sqrt (param);
printf ("sqrt(%lf) = %lf\n", param, result );
return 0;
}
$ gcc rms.c
/tmp/ccaWecFP.o(.text+0x24): In function `main':
: undefined reference to `sqrt'
collect2: ld returned 1 exit status
如果我用 (double)16 替换 sqrt() 的参数,则程序正在编译并执行。为什么在第一种情况下会抛出错误。
这是链接器错误。
链接器缺少执行sqrt()
。它位于图书馆libm
.
通过应用选项告诉 GCC 添加它-lm
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)