gcc 的奇怪编译问题

Strange compilation issue with gcc

为什么下面的程序用gcc编译,...

#include<stdio.h>
#include<math.h>

void foo(double x) {
   printf("%f", sin(2));
}

int main() {
   foo(1);
}

...而这个其他程序没有?

#include<stdio.h>
#include<math.h>

void foo(double x) {
   printf("%f", sin(x));
}

int main() {
   foo(1);
}

它给出了以下错误信息:

/tmp/ccVT7jlb.o: nella funzione "foo":
fun.c:(.text+0x1b): riferimento non definito a "sin"
collect2: error: ld returned 1 exit status*

你需要像这样 link 到 libm.so

gcc -Wall -Wextra -Werror source.c -o executable -lm

查看 -lm