分发静态链接的ELF 32位二进制文​​件 - 它是否可以在所有平台上运行?

时间:2010-08-30 23:45:09

标签: linux compiler-construction binary installation distribution

我的团队已准备好发布我们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等)?

我也有点担心'对于GNU / Linux 2.6.15'的部分,这是否意味着他们需要内核2.6.15或更高版本?

1 个答案:

答案 0 :(得分:3)

不建议使用完全静态链接的程序。

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

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

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

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