我正在使用 GCC 在 Ubuntu 13 上编译 C++ 应用程序。我希望能够在我的代码中使用 C++11 功能,但同时仍然能够生成我的用户可以运行的二进制文件旧版本的 Ubuntu。
如果我使用最新版本的 GCC 在 Ubuntu 13 上编译,我的二进制文件将无法在 Ubuntu 12 上运行,因为 glibc 不向前兼容: ( How compatible are different versions of glibc? )
我有哪些选择?
这是否可能不需要我的用户跳过大量的障碍?
如果没有,我的用户必须做什么才能运行二进制文件(即他们能否在旧版本的 Ubuntu 上安装更新的 glibc)?
注意:我不想考虑静态链接 glibc,因为:
- 我读到这是一个非常糟糕的主意
- 许可问题
- 跨发行版兼容性问题
目前我的应用程序不使用任何 C++11 特性,我在旧版本的 Ubuntu 上使用旧版本的 GCC 编译以避免这个问题。但是不能使用最新最好的语言特性让我很难过:(
最佳答案
您可以尝试使用 Boost Libraries,它具有与 C++11 完全相同的功能,并且比 C++11 “更兼容”:它可以很容易地在旧版本上编译Ubuntu。
否则最好的选择可能是要求 Ubuntu 12.04 的用户将 GCC 从 4.6 升级到 4.7 或更新版本: http://www.swiftsoftwaregroup.com/upgrade-gcc-4-7-ubuntu-12-04/
关于c++ - 旧发行版上的二进制兼容性(使用 C++11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20131275/