分发静态链接的 ELF 32 位二进制文件 - 它会在所有平台上运行吗?

问题描述 投票:0回答:1

我的团队已准备好发布 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 installation binary distribution static-linking
1个回答
3
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.