我有一个应用程序部署在centos 6.7平台上,并使用该发行版的本机C ++编译器构建,即gcc 4.4.7。现在由于某些原因(实际上,升级到Qt 5.7),我需要使用完全支持C ++ 11功能的现代编译器,让我们从devtoolset-2说gcc 4.8.2。另一种可能性是从源代码构建新版本的gcc。根据{{3}} 4.8.3(但未提及4.8.2)gcc的版本向后兼容libstdc ++。6.0.13(默认c ++ lib in centos 6.7)。
我已经使用这个新的gcc 4.8.2版本重新编译了应用程序,并且所有内容似乎都在开发环境中正常运行。该应用程序使用默认系统c ++,gcc和c libs。
然而,当谈到在centos 6.7上进行部署时(例如在全新安装之后),我问自己这样做有多安全?而不是依赖于ABI兼容性,提供与用于构建我的应用程序的gcc版本兼容的最新C ++和C库会更好吗?
答案 0 :(得分:0)
很高兴看到其他人这样做 - 我最近也开始这样做了!
我的回答不是很权威,但是对于它的价值,我重建了所有我要链接的C ++库,并将它们与我的应用程序一起部署。我还重新发布libstdc ++和libgcc_s,将它们放在一个特殊的地方(/usr/lib/myApplicationName/...
)。我确保我的应用程序链接所有这些重新分发的库,而不是任何原生的。
我担心libc兼容性可能会成为问题,但我还没发现我需要对任何C库或libc本身做任何事情。
更新:结果I didn't even need to do this, because I'm using devtoolset; FML。