我一直在我的mac / linux上开发一个针对现代编译器的C ++ 11应用程序,它工作正常,但后来我尝试将它部署到一个非常古老的linux盒子(g ++ 4。1。2:2007年2月)和当然太旧了,可执行文件也无法运行。
这并不奇怪,但现在我想知道是否有标准的时间来支持编译器/标准?
我浏览了一下,但没有提到这一点。当开发人员认为它的生命结束并且不会修补错误时,对编译器版本的支持是否会下降?
答案 0 :(得分:0)
您是运行gcc(或g++
)的人。它是编译器,由开发人员使用。最终用户系统可能没有任何版本的gcc。您需要担心的是glibc
和libstdc++
。但总的来说,Linux并不是针对二进制兼容性。不要指望任何二进制可执行文件在任何其他发行版/主要版本上正常运行。
相反,glibc和libstdc ++小心使用旧内核版本,因此您应该能够在Linux机器上安装(configure + make + install)最新的运行时支持库,然后为此构建应用程序。 / p>
最简单的方法是将目标所具有的分发版和版本安装到虚拟机中。然后安装C ++ 11开发人员工具,并构建您的应用程序。