【问题标题】:ELF binaries in different linux distibutions不同 Linux 发行版中的 ELF 二进制文件
【发布时间】:2016-11-12 10:50:53
【问题描述】:

如果我有一个 ELF 二进制文件,在 Ubuntu 中使用 gcc 或 QtCreater 生成,这个二进制文件是否可以在另一个 Linux 发行版中执行,例如 RHEL?
(我猜纯 CLI 程序可以,但 GUI 程序取决于)
32 位二进制能否在 64 位机器上运行,反之亦然?

【问题讨论】:

  • 这取决于几个因素(链接、依赖等...)
  • x86_64 程序无法在 IA-32 系统上运行。但是,IA-32 程序应该在 x86_64 系统上运行。

标签: linux elf


【解决方案1】:

是的。只要架构兼容,ELF 二进制文件就可以在不同的系统上运行。即 32 位 x86 ELF 可以在 64 位 x64 系统上运行。

也就是说,这并不意味着您的程序甚至会启动。它仍然要求满足所有运行时依赖项。这尤其包括程序使用的每个共享库。如果它们在正在运行的机器中不可用,则程序将无法运行。

您可以使用objdump -p <program | grep NEEDED 查看所需的共享库。如果它们不适用于您的 taget 系统,您还可以分发 SO 文件并修改 LD_LIBRARY_PATH 以加载它们。

但是即使满足共享库,也不能保证程序正常工作。您仍然可能会错过配置文件、字体、系统服务、内核功能...您必须在您打算支持的每个发行版上对其进行测试。

PS:话虽如此,CLI 和 GUI 程序之间的问题在概念上并没有什么不同。只是 GUI 程序往往有更多的依赖项......

【讨论】:

    猜你喜欢
    • 2017-10-11
    • 2021-08-05
    • 1970-01-01
    • 2023-03-31
    • 2011-01-02
    • 1970-01-01
    • 2017-09-02
    • 2017-03-26
    • 2014-02-10
    相关资源
    最近更新 更多