我的简单程序compTest.c
#include<stdio.h>
#include<complex.h>
int main(void)
{
double complex z = 1.0 + 1.0 * I;
printf("|z| = %.4f\n", cabs(z));
return 0;
}
使用标准库并在Linux系统上使用gcc进行编译时,我是否需要包括-lm标志才能使其正常工作?
示例:
gcc -o executableName fileName.c -lm
当我不知道以下内容时: /tmp/cc1o7rtt.o:在“ main”函数中:
comTest.c:(.text+0x35): undefined reference to `cabs'
collect2: error: ld returned 1 exit status
答案 0 :(得分:1)
看来您已经发现答案是肯定的。
-lm
标志告诉链接器链接数学库,数学库除其他外还包含cabs
函数的代码。 (这是gcc / Linux问题,而不是C语言问题。)
cabs
的Linux手册页特别指出Link with -lm.
(通常,如果您想调用 any 库函数,但您不确定100%如何使用它,请阅读手册页。)