为较旧的Linux编译c++ 11程序

Compile a C++11 program for an older Linux

本文关键字:c++ 程序 编译 Linux      更新时间:2023-10-16

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

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

是否有一些方法可以在非c++ 11系统上工作,或者我必须将其重写为c++ 98?

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

如果你想/需要在较旧的发行版上编译你的代码,你需要提供不使用c++ 11特性的替代代码。

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

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