我试图编译一个包含<math.h>. 但是我成功创建了一个可执行文件,没有链接到libm.a.
我输入的命令是gcc -Wall filename.c -o executablename
我被告知要链接到外部库(即/libc.a 以外的库)
这是怎么回事?
#include <math.h>
#include <stdio.h>
int main(void)
{
double x = sqrt(2.0);
printf ("The sqrt of 2 is: %f\n", x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您调用的数学函数是由编译器内置函数实现的。如果您想看到错误消息,请尝试以下操作:
gcc -fno-builtin -Wall filename.c -o executablename
Run Code Online (Sandbox Code Playgroud)
例如,在我的平台(Ubuntu 14.04.3 LTS)上,我收到以下错误消息:
$ cat x.c
#include <math.h>
#include <stdio.h>
int main(void)
{
double x = sqrt(2.0);
printf ("The sqrt of 2 is: %f\n", x);
return 0;
}
$ gcc -fno-builtin x.c
/tmp/ccpjG2Pb.o: In function `main':
x.c:(.text+0x1c): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)