C++ 快速数学导致对`u pow_finite';的引用未定义;

C++ 快速数学导致对`u pow_finite';的引用未定义;,c++,c,clang,clang++,ubuntu-20.04,C++,C,Clang,Clang++,Ubuntu 20.04,在ubuntu 20.04上,当我使用clang-8或clang-9(clang版本9.0.1-12)编译包含对libm的引用的简单代码时,它将失败,并出现错误“未定义对的引用\uuuu pow\u finite” gcc很好。你知道这里怎么了吗 c++也有同样的问题: #include <cmath> int main() { double x=1, y=1; x = pow(x,y); } F31没有这个问题。也可以。一定是系统出了问题,或者是特定的颠覆 到目

在ubuntu 20.04上,当我使用clang-8或clang-9(clang版本9.0.1-12)编译包含对libm的引用的简单代码时,它将失败,并出现错误“未定义对
的引用\uuuu pow\u finite

gcc很好。你知道这里怎么了吗

c++也有同样的问题:

#include <cmath>

int main()
{
    double x=1, y=1;
    x = pow(x,y);
}
F31没有这个问题。也可以。一定是系统出了问题,或者是特定的颠覆

到目前为止,顺序并不重要,因此我认为它不是:

将ld更改为collect2也有相同的问题,因此它不应该是ld的问题

clang-9 -v -fuse-ld=/usr/lib/gcc/x86_64-linux-gnu/9/collect2 test.c -ffast-math -lm
更新


这似乎与我有关。不再有
math finite.h
,因此当
-ffast math
生成
\uu*finite
时,它将失败。clang必须。

在编译时添加头文件,
clang-L/home/xiaokun/lib/glibc-2.32-install/lib-I/home/xiaokun/lib/glibc-2.32-install/include-lm-ffast math a.c
我已经试过了。结果相同。相关,但不重复(由于这个问题似乎涉及GCC:@NateEldredge,不幸的是,事实并非如此。请注意,如果是订单问题,它会说:
未定义对“pow”的引用
不是
\uuu pow\u infinate
我同意这看起来像是clang或glibc或Ubuntu20.04的组合的bug。如果这是一个错误,它可以与clang-10一起工作可接受的替代方案。
#include <cmath>

int main()
{
    double x=1, y=1;
    x = pow(x,y);
}
$ clang-9 test.c
/usr/bin/ld: /tmp/test-3389a6.o: in function `main':
test.c:(.text+0x25): undefined reference to `pow'

$ gcc test.c
/usr/bin/ld: /tmp/cc21n4wb.o: in function `main':
test.c:(.text+0x39): undefined reference to `pow'
clang-9 test.c -ffast-math -lm
/usr/bin/ld: /tmp/test-6dfc29.o: in function `main':
test.c:(.text+0x2a): undefined reference to `__pow_finite'

clang-9 -ffast-math test.c -lm
/usr/bin/ld: /tmp/test-6754bc.o: in function `main':
test.c:(.text+0x2a): undefined reference to `__pow_finite'

clang-9 -v -fuse-ld=/usr/lib/gcc/x86_64-linux-gnu/9/collect2 test.c -ffast-math -lm