为旧版Linux编译C ++ 11程序

时间:2014-06-17 14:48:35

标签: c++ linux

我编写了一个C ++程序,并使用了一些C ++ 11功能。这不是问题,因为我的系统上最近有g++clang++。现在我想在其他具有旧版Ubuntu或其他发行版的计算机上运行它。

更糟糕的是,我依赖于Boost,json,crypto ++和其他库。

有没有办法让这个在非C ++ 11系统上运行,或者我必须将其重写为C ++ 98?

3 个答案:

答案 0 :(得分:3)

如果您希望/需要在较旧的发行版上编译代码,则需要提供不使用C ++ 11功能的备用代码。

如果您只需要可用的成品,您可以在c ++ 11编译器上进行交叉编译,并生成一个与您希望支持的其他发行版兼容的二进制文件。

答案 1 :(得分:3)

你应该静态链接它。在Ubuntu repos中有libstdc++boost和其他库的静态版本。您可以在C ++ 11系统上编译二进制文件,然后将它们复制到C ++ 98系统。它们不依赖于libstdc++的C ++ 11版本。

答案 2 :(得分:1)

只需将您需要的所有库复制到旧系统即可。在调用您的progamm之前设置LD_LIBRARY_PATH以选择您的库版本而不是内置库。