【问题标题】:Undefined reference to pow when compiled using gcc [duplicate]使用 gcc 编译时对 pow 的未定义引用 [重复]
【发布时间】:2021-09-22 08:41:16
【问题描述】:

我在 C 中使用 pow 函数,并且也包含了 math.h
以下是我得到的错误:

/usr/bin/ld: /tmp/ccUkOL31.o: 在函数'main'中: a1B.c:(.text+0xf3): 未定义对“pow”collect2 的引用:错误:ld 返回 1 退出 状态

虽然我在 StackOverflow 上读到需要链接。但这很奇怪。当我们使用gcc 编译时,有什么方法可以避免这个额外的步骤。 g++ 似乎是自动完成的。

【问题讨论】:

  • 我想指出,不正确使用行话通常表明缺乏理解力。您没有包含 math.h 库,而是包含了 math.h 头文件。头文件描述了数学库的 API,它可能位于类似/lib/libm.so.6 的位置。该库需要链接,这并不奇怪。假设一切都在 libc 中(自动链接)可能更奇怪。如果您的问题是手动执行命令,那么不要。使用 make 或 cmake。输入 make 始终是 1 步。

标签: c gcc undefined-reference pow


【解决方案1】:

当我们用 gcc 编译时,有什么办法可以避免这个额外的步骤?

我这样做的方法是使用一个调用gcc 的脚本(我的SPATH 中有~/bin

$ cat ~/bin/mycc
#!/bin/sh
gcc -std=c11 -pedantic -Wall $* -lm
$ mycc example1.c example2.c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2015-07-12
    • 1970-01-01
    • 2012-06-03
    • 2021-06-08
    • 1970-01-01
    • 2021-09-16
    相关资源
    最近更新 更多