如何编译适用于较旧 Linux 发行版的二进制文件



我有Ubuntu 16.10。 如何编译C++程序,以便二进制文件在 Ubuntu 14.04 或任何其他类似年龄的 Linux 发行版上正常工作? (我只对x86-64感兴趣。

这可以通过 16.10 (gcc 6.2( 上的默认编译器实现,还是我需要安装和使用相同的编译器 14.04 (gcc 4.8(? 如果我需要较旧的编译器,是否需要-multilib包?

我对兼容性所需的一般(与发行版无关(解释以及有关如何在我的 Ubuntu 版本上执行此操作的更具体提示感兴趣。

丑陋的解决方案是静态链接所有内容(包括c ++运行时(,以生成巨大的整体可执行文件,这些可执行文件不会过多地依赖系统库(例如,这就是它们在go语言中的工作方式(。另一个丑陋的解决方案是设置一些 CI 并在所有支持的系统上构建所有内容。但是,这很可能意味着在编写所有内容时考虑到最旧的受支持系统,并与兼容性问题作斗争。

最新更新