gpt4 book ai didi

c++ - 与旧版本的 libstdc++ 链接

转载 作者:IT老高 更新时间:2023-10-28 12:48:09 28 4
gpt4 key购买 nike

安装新的构建机器后,我发现它带有标准 C++ 库的 6.0.10

-rw-r--r--  1 root root 1019216 2009-01-02 12:15 libstdc++.so.6.0.10

但是,我们的许多目标机器仍然使用旧版本的 libstdc++,例如:

-rwxr-xr-x 1 root root  985888 Aug 19 21:14 libstdc++.so.6.0.8

显然 ABI 在最后两个 0.0.1 中发生了变化,因为尝试运行程序会导致

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found

我尝试显式安装旧版本的 gcc,但没有帮助。升级目标机器是我无法控制的,所以不是一个选择。让我的构建在具有较旧 libstdc++ 的机器上运行的最佳方法是什么?

我在 apt-cache 中搜索了要安装的旧 libstdc++ 版本,但显然没有旧版本 6 可用?

最佳答案

您不需要链接到不同的库,您需要使用旧版本的编译器。

看看the GNU ABI policy . libstdc++ 共享库被设计为向前兼容。 IE。如果需要 6.0.8,可以使用 6.0.10 版本。在政策中,您可以从 gcc-4.2.0 开始阅读,需要 6.0.9,因此您需要 gcc-4.1.x。

简而言之,这就是为什么您的系统上只有一个 libstdc++.so.6.0.x,您只需要最新的。

至于将构建系统设置为仅使用特定版本的编译器:确保不能使用标准 g++(重命名链接,删除提供它的包,将其从 PATH 中取出),然后开始挖掘。为我工作。

关于c++ - 与旧版本的 libstdc++ 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2085427/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com