【问题标题】:Distributing a statically linked ELF 32bit Binary - Will it run on all platforms?分发静态链接的 ELF 32 位二进制文​​件 - 它会在所有平台上运行吗?
【发布时间】:2010-08-30 23:45:08
【问题描述】:

我的团队已准备好发布我们的 Linux 程序的第一个版本,并希望以最简单的方式(对于用户)这样做。

该程序不需要外部文件,无需安装,并且是静态链接的。

ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.15, not stripped

我的问题是这样的二进制文件是否可以在大多数 Linux 平台(Ubuntu、Redhat、OpenSuse 等)上运行?

我也有点担心上面写着“for GNU/Linux 2.6.15”的部分,这是否意味着他们需要内核 2.6.15 或更高版本?

【问题讨论】:

    标签: linux compiler-construction binary installation distribution


    【解决方案1】:

    不再推荐使用完全静态链接的程序。

    可移植层从内核调用转移到基本库(还记得 pthread 灾难和 LinuxThreads NPTL 线程的问题吗?)。

    遵循 LSB 4.0 标准。相信那里提到的库的存在(不幸的是没有那么多)并将所有其他共享库与您的应用程序捆绑在一起。有一个链接器标志 - 我认为它是 -L - 您可以在其中设置一个 ldd 路径,该路径在共享库加载期间优先于所有其他设置,因此您的库总是首先加载。

    确保所有库仅调用 LSB 批准的 API 函数(或查看 LSB 网站,了解不受支持的 LSB API 调用有多严重 - 有时您根本无法避免它,它们有一个分发列表支持这个电话)。

    这是交付二进制可执行文件的推荐方式。与 Windows/MacOSX 相比,它在 Linux 上仍然很糟糕。

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 2014-10-19
      • 2012-04-12
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多