【问题标题】:How to launch in Ubuntu 18 a program built in Ubuntu 20? [duplicate]如何在 Ubuntu 18 中启动在 Ubuntu 20 中构建的程序? [复制]
【发布时间】:2021-08-15 16:08:00
【问题描述】:

我在 Ubuntu 20.04 中使用 gcc 10 构建了我的 C++ 程序,然后在 Ubuntu 18.04 中运行它,但不幸出现如下错误:

/opt/aspen/my: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /opt/my/myRenderer.so)
/opt/my/my: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /opt/my/libpython3.8.so.1.0)
/opt/my/my: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /opt/my/libpython3.8.so.1.0)

是否可以通过在 Ubuntu 18.04 中安装一些额外的软件包来解决此问题?

【问题讨论】:

  • 有一些方法1。在您当前的机器上安装gcc,例如从源代码编译它。 2。升级您拥有的整台机器。 3 在第一台机器上将它编译成 静态二进制 文件而不是动态文件,然后你几乎可以在任何地方运行它。
  • 我明白了。是否可以在 Ubuntu 18 中安装缺少的 glibc 二进制文件(无需从源代码编译)?
  • 是的 - 你可以,但这并不容易,我做过一次 - 你可能最终在你拥有的机器上共享 libs 之间发生冲突 - 最安全的是 静态构建 在 Ubuntu 20 上。

标签: linux ubuntu gcc glibc


【解决方案1】:

有一些方法
1。在您当前的机器上安装gcc,例如从源代码编译它。它不能保证 - 因为您可能需要更高版本的 glibc
2。升级你拥有的整台机器。
3在第一台机器(Ubuntu 20)上将它编译成静态二进制文件而不是动态文件,然后你几乎可以在任何地方运行它。

注意。您可能会想到只在您的机器上编译glibc - 这是可能的,但由于许多其他库依赖于glibc,因此可能会在运行 CMD 或其他程序时遇到错误。最安全的是选项 3 静态构建。

【讨论】:

  • @employees-russian 我已经在 Ubuntu、Debian 和 Arch 上使用和使用了许多静态构建的二进制文件超过 5 年,我不这么认为 与普遍看法相反,静态链接产生的更少,而不是更多,Linux 上的可移植可执行文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2014-04-25
  • 2012-05-31
  • 1970-01-01
相关资源
最近更新 更多