我知道一个操作系统的库可能无法用于另一个操作系统,比如 Android 和 Ubuntu,但是来自一个或另一个操作系统的程序可以在另一个操作系统上运行而无需重新编译吗?
如果 Linux 操作系统仍然是 Linux,它不应该能够按预期工作吗?CPU\GPU 不同的问题是否也有影响?
我知道一个操作系统的库可能无法用于另一个操作系统,比如 Android 和 Ubuntu,但是来自一个或另一个操作系统的程序可以在另一个操作系统上运行而无需重新编译吗?
如果 Linux 操作系统仍然是 Linux,它不应该能够按预期工作吗?CPU\GPU 不同的问题是否也有影响?
这可能与 SO 无关,但我在Ask Ubuntu上找到了这个
这是两个问题:
Linux 二进制文件对所有发行版都通用吗?
这取决于:
如果程序在 Linux 内核之外没有使用任何东西,那么它将是通用的,除了 32 位或 64 位问题。Linux“hello world”(一个简单的程序,只是将“hello world”打印到终端窗口)可能独立于发行版。如果程序使用任何非内核库或服务(大多数是 Linux,内核相当小),则在包含哪些库、这些库的版本以及它们的位置方面存在差异。所以在这种(最常见的)情况下,分布不相等。为什么许多商业程序说它们只适用于一个或几个发行版?
因为有大量的 Linux 发行版,没有人愿意在所有发行版上测试他们的程序。
商业供应商通常会说他们只支持他们测试过他们的软件的发行版。它可能适用于其他发行版,也可能不适用,从供应商的角度来看,关键是如果它不适用于他们不支持的发行版,您就不能抱怨。
选择哪些发行版进行测试取决于供应商希望他们的客户使用什么。商业/专业程序通常选择企业发行版,可能通过类似于“为他们的操作系统付费的人更有可能为我们的软件付费”的推理,可能只是通过计算现有客户使用的发行版。
另请参阅 Mark Shuttleworth(我们首先拥有 Ubuntu 的原因)关于 Ubuntu 和 Debian 之间的二进制兼容性 - Debian 是最接近 Ubuntu 的发行版。