我编写了一个C ++程序,并使用了一些C ++ 11功能。这不是问题,因为我的系统上最近有g++
和clang++
。现在我想在其他具有旧版Ubuntu或其他发行版的计算机上运行它。
更糟糕的是,我依赖于Boost,json,crypto ++和其他库。
有没有办法让这个在非C ++ 11系统上运行,或者我必须将其重写为C ++ 98?
答案 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
以选择您的库版本而不是内置库。