gpt4 book ai didi

c++ - 用较新的 GCC 版本替换 GCC 的系统级 C++ 运行时是否安全?

转载 作者:IT王子 更新时间:2023-10-29 00:33:49 26 4
gpt4 key购买 nike

Linux C++ 程序使用针对 libgcc_s.so.1libstdc++.so.6 库的 GCC 链接构建,每个库都包含多个 ABI:较新版本包含来自旧版本加上新版本。 GCC ABI policy document说针对旧运行时构建的程序应该能够在新运行时上运行。因此,理论上,较旧的二进制文件应该可以在新系统上运行。

如果我有一个运行时较旧的系统并且不想在这个系统上经历升级 GCC 的麻烦,我可以手动用新的库替换上面提到的库吗?从理论上讲,所有链接到它的旧可执行文件都应该可以工作(包括 GCC 本身),但感觉就像是一个拼凑。

这样做安全吗?

最佳答案

也许,但我不推荐它,至少在没有广泛测试的情况下不推荐,因为几乎肯定会吃掉任何 yield 。原因如下:

  • “ABI 兼容”不一定是“错误兼容”。即使保持了 ABI 兼容性,如果您的应用以某种方式依赖于先前版本库中不正确的行为,它们仍可能会以令人惊讶的方式崩溃。
  • 可能会有错误最终破坏您的应用程序,同样不会与 ABI 不兼容。
  • 如果您没有编译新库完全正确,它们可能与 ABI 兼容。
  • 您确定原始库是从原始 GNU 源代码编译而来的吗?也许有你不知道的补丁。如果您不能确定这一点,您就无法确定现有系统/应用程序的兼容性。

您的目标是什么?如果您只想编译使用更新功能的 C++ 应用程序,您可以在安装原始版本的同时安装新版本的 GCC,您只需要确保您可能使用的所有库也是使用新版本构建的。

关于c++ - 用较新的 GCC 版本替换 GCC 的系统级 C++ 运行时是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3368400/

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