C和<complex.h>文件

时间:2019-02-16 01:12:47

标签: gcc c-header

我的简单程序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

1 个答案:

答案 0 :(得分:1)

看来您已经发现答案是肯定的。

-lm标志告诉链接器链接数学库,数学库除其他外还包含cabs函数的代码。 (这是gcc / Linux问题,而不是C语言问题。)

cabs的Linux手册页特别指出Link with -lm.

(通常,如果您想调用 any 库函数,但您不确定100%如何使用它,请阅读手册页。)