moh*_*hit 3 c gcc ld modulo libm
fmod的示例代码:
#include <stdio.h>
#include <math.h>
int main(void)
{
double x = 0.14527, y = 3.14159;
printf("fmod(x, y) = %.6lf\n", fmod(x, y));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译:
$ gcc main.c -o main
Run Code Online (Sandbox Code Playgroud)
我明白了
/tmp/ccztJO01.o:在函数`main'中:
main.c :(.text + 0x4d):对`fmod'的未定义引用
collect2:ld返回1退出状态
然后我在谷歌发现了这个:
$ gcc -lm main.c -o main
Run Code Online (Sandbox Code Playgroud)
我为什么要使用-lm,究竟是什么?从哪里可以获得有关gcc的更多信息?
当我输入时,gcc -lm main.c -o main我仍然收到链接器错误。我需要写gcc main.c -lm -o main它才能正常工作。如果它以另一种方式为你工作,那就有点奇怪了。我知道链接器会找到 main.c 中声明的符号(即double fmod(double,double)),但只有在稍后找到其定义时才解析它(即在libm.a)中。
长话短说,库必须放置(至少一次)在使用位置的“右侧”。