我的团队已准备好发布 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 或更高版本?
不再推荐完全静态链接的程序。
可移植层从内核调用移至基本库(还记得 pthread 灾难和 LinuxThreads <-> NPTL 线程的问题吗?)。
遵循LSB 4.0标准。相信那里提到的库的存在(不幸的是没有那么多)并将所有其他共享库与您的应用程序捆绑在一起。有一个链接器标志 - 我认为它是 -L - 您可以在其中设置一个 ldd 路径,该路径在共享库加载期间优先于所有其他设置,因此您的库始终首先加载。
确保所有库仅调用 LSB 批准的 API 函数(或者查看 LSB 网站,看看不支持的 LSB API 调用有多严重 - 有时您根本无法避免它,他们有一个支持的发行版列表这个电话)。
这是提供二进制可执行文件的推荐方法。与 Windows/MacOSX 相比,它在 Linux 上仍然很糟糕。