Linux C ++程序使用针对libgcc_s.so.1
和libstdc++.so.6
库的GCC链接构建,每个库包含多个ABI:较新版本包含先前版本的ABI和新版本的ABI。 GCC ABI policy document表示针对旧运行时构建的程序应该能够与新运行时一起运行。因此,从理论上讲,较旧的二进制文件应该可以在新系统上运行。
如果我的系统具有较旧的运行时并且不想在此系统上遇到升级GCC的麻烦,我可以手动用新的库替换上面提到的库吗?从理论上讲,与之相关的所有旧的可执行文件都应该可以工作(包括GCC本身),但它感觉就像一个kludge。
这样做是否安全?
答案 0 :(得分:4)
也许,但我不推荐它,至少在没有广泛测试的情况下,几乎肯定会吃掉任何收益。原因如下:
你的目标是什么?如果您只是希望能够编译使用更新功能的C ++应用程序,您可以安装新版本的GCC和原始版本,您只需要确保您可能使用的所有库都是使用新版本构建的。