在较新的Ubuntu版本中为旧的Ubuntu版本编译C / C ++

时间:2018-11-14 11:17:35

标签: c++ ubuntu gcc cmake cross-compiling

我拥有在Ubuntu容器中运行Ubuntu 18.04的服务器,但是我需要为Ubuntu的较早版本(例如16.04)构建二进制文件(各种静态和共享库以及可执行文件),而不必安装较早的版本操作系统。

当前,我们使用sysroot工具链(包括编译器和库等)和CMake工具链文件来构建其他目标(例如ARM Poky / Yocto),并且如果可以使用相同的方法来构建较旧版本(或更高版本)。

有可能吗?

1 个答案:

答案 0 :(得分:2)

一切皆有可能,但是您可以做的最简单的事情就是创建一个带有旧OS的新Docker映像(或其他类型的机器)。然后一切都会“正常工作”。

如果您真的不想这样做,则需要确定所有依赖项(从libc开始),这些依赖项在较旧的平台上缺少符号,然后弄清楚如何避免使用这些符号。这可能会浪费大量时间,尤其是考虑到您已经有一个构建容器(制作第二个容器并不难)。