【问题标题】:Binary file from one linux to another二进制文件从一个 linux 到另一个
【发布时间】:2011-06-05 01:10:51
【问题描述】:

有没有可能的方法来运行在另一个 Linux 上编译的二进制文件?我知道当然最简单的方法是在另一台机器上重建它,但让我们假设我们唯一能得到的是一个二进制文件,那么它可能吗? (我知道这可能并不容易,但我只是好奇)。

【问题讨论】:

    标签: linux binary-compatibility compiled


    【解决方案1】:

    如果二进制文件中使用相同或相似的库,这通常是可能的。每隔一段时间,您在不同版本的 Linux 上都有不同版本的库,最终会导致崩溃,但通常您可以运行 ldd 以查看可执行文件使用哪些库,然后在第二个平台上查看是否这些库也存在。

    【讨论】:

      【解决方案2】:

      虽然共享库匹配的事情是非常正确的(使用ldd 来获取需要相同的共享库列表),但系统需要是相同的架构(或者安装了兼容库/内核) x86 二进制文件在 x86_64 架构上运行)。

      一种选择是静态链接(或提供您自己的共享库),这样您只需要内核 ABI 级别的兼容性。当然,这意味着使用非标准选项(NIS、LDAP 等)的系统/发行版有点混乱。

      另一种选择是分发 .a 文件并在目标系统上执行最终链接。这当然假设系统有一个编译器,但对于对象分发来说可能是最可移植的。

      但是,在所有情况下,您都必须具有架构兼容性。 x86 是最小的公分母,但绝不是唯一的。

      【讨论】:

        【解决方案3】:

        如果 libc 版本相同并且任何其他依赖的共享库可用,那么可以,您可以从其他 Linux 运行二进制文件。在目标平台上的二进制文件上使用“ldd -v”来查看是否缺少任何库。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-08
          • 2017-01-13
          相关资源
          最近更新 更多