Linux替换旧gcc,用更新的GCC版本替换GCC的系统级C运行时是否安全?

Linux C程序使用针对libgcc_s.so.1和libstdc .so.6库的GCC链接构建,每个库包含多个ABI:较新版本包含先前版本的ABI和新版本的ABI. GCC ABI policy document表示针对旧运行时构建的程序应该能够与新运行时一起运行.因此,从理论上讲,较旧的二进制文件应该可以在新系统上运行.

如果我的系统具有较旧的运行时并且不想在此系统上遇到升级GCC的麻烦,我可以手动用新的库替换上面提到的库吗?从理论上讲,与之相关的所有旧的可执行文件都应该可以工作(包括GCC本身),但它感觉就像一个kludge.

这样做是否安全?

解决方法:

也许,但我不推荐它,至少没有经过大量测试几乎肯定会吃掉任何收益.原因如下:

>“ABI兼容”不一定是“bug兼容”.即使保持了ABI兼容性,如果他们以某种方式依赖于以前版本的库中不正确的行为,您的应用程序仍可能以惊人的方式中断.

>可能会有新的错误最终破坏您的应用程序,再次没有ABI不兼容.

>如果您没有完全正确地编译新库,它们可能不兼容ABI.

>您确定原始库是从原始GNU源编译的吗?也许有一些你不知道的补丁.如果您无法确定,则无法确定现有系统/应用程序的兼容性.

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

标签:c-2,linux,gcc

来源: https://codeday.me/bug/20190626/1299280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值