在 Ubuntu 22 上使用 GCC 10 进行构建会导致在 Ubuntu 20 上运行可执行文件时缺少库(GLIBC_2.34)

在 Ubuntu 22 上使用 GCC 10 进行构建会导致在 Ubuntu 20 上运行可执行文件时缺少库(GLIBC_2.34)

因此,我有一个从 Ubuntu 20 升级到 22 的 VM。此 VM 用作我工作中的开发环境,我在此构建应用程序,这些应用程序应在目标 Ubuntu 20 机器上运行。现在,当我的 VM 运行 Ubuntu 20 时,我能够构建应用程序并在目标机器上运行它们。但是,将其升级到 Ubuntu 22 后,在我的 VM 上构建应用程序并尝试在目标机器(仍在 20 上)上运行它们会产生以下错误:

usr/lib/libc.so.6: version `GLIBC_2.34' not found

我检查了两台机器上的 GCC-10 编译器之间的差异,发现了一些细微的差别:

Ubuntu 20有该gcc (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0版本。

Ubuntu 22 有gcc (Ubuntu 10.3.0-15ubuntu1) 10.3.0版本

虽然两者都基于 10.3.0,但我猜测这种细微的差别可能是问题的根源。

现在我尝试卸载预建的 GCC-10 并下载并安装 Ubuntu 20 GCC-10 deb 文件,但陷入了依赖地狱。

因此,我的问题是,是否有办法在 22 上安装此特定版本,尽管最初计划在 20 上安装。或者,是否有办法在本地添加这个缺失的库。请注意,我可以弄乱我的虚拟机,但不能弄乱目标机器。

相关内容