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



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

目前,我们使用sysroot工具链(包括编译器和库等(和CMake工具链文件来构建其他目标(例如ARM Poky/Yocto(,如果我们可以使用相同的方法来构建较旧(或可能较新(版本的Ubuntu,那将是理想的选择。

有可能吗?

任何事情都有可能,但你能做的最简单的事情就是用旧的操作系统创建一个新的Docker镜像(或其他类型的机器(。然后一切都会"正常工作"。

如果你真的不想这样做,你需要识别所有的依赖项,从libc开始,它在旧平台上缺少符号,然后找出如何避免使用这些符号。这可能会浪费大量时间,尤其是考虑到您已经有了一个构建容器(制作第二个应该不难(。

最新更新