0

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

1 回答 1

2

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

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

Linux手册页cabs专门说Link with -lm.

(一般来说,如果您想调用任何库函数并且您不能 100% 确定如何使用它,请阅读手册页。)

于 2019-02-16T01:20:29.933 回答