引用 std::pow() 需要 GLIBC2.29

问题描述 投票:0回答:1

我正在 Ubuntu 20.04 上构建,我的程序在 RedHat 8 上执行得很好,直到我包含

<cmath>
并使用
std::pow(double, double)
。现在我在 RedHat 8 上收到以下错误:

/lib64/libm.so.6: version `GLIBC_2.29' not found (required by /MyOwnLib.so)

std::pow
有什么特别之处以至于需要 GLIBC 2.29?这个功能很老了。我可以以某种方式强制 Ubuntu 上的编译器“链接”旧版本吗?

c++ redhat cmath
1个回答
0
投票

C++ 不是 ABI 稳定的:当你在你的机器上构建一些东西时,它只能在你的机器上运行。这是因为生成的二进制文件特定于您的架构。

在这种情况下,似乎 C 标准库 (libc) 不匹配。

如果你不想依赖标准C++的系统实现,你可以尝试静态链接到标准库。

如果您使用

gcc
clang
,请尝试
-static
编译器选项。

问题的解决方案是将程序编译到目标平台。

© www.soinside.com 2019 - 2024. All rights reserved.