Ama*_*rab 1 compatibility executable
我看了这个方案,现在我想知道,一个可执行文件可以在两个具有相同祖先的系统中运行吗?(所以可能是同一个内核?)
例如,根据方案:Solaris <- System V R4 <- BSD 4.3,那么,BSD*(OpenBSD、FreeBSD、NetBSD)和Solaris可以运行相同的可执行文件吗?
PS可能是这个问题对你来说很明显而且毫无意义,但我对* nix完全陌生,所以对我来说这很重要。
简短的回答:没有。
中等答案:也许吧,如果目标操作系统支持的话。
长答案...
首先要注意的是,不同的供应商可能使用不同的芯片组。因此,可以为 SPARC 芯片编译 Solaris 二进制文件。这不会在 Intel/AMD 机器上运行。类似地,AIX 可能位于 PowerPC 上。HP-UX 可能在 PA-RISC 上。让我们忽略所有这些问题,并坚持使用“Intel/AMD”空间。
下一个问题是不同的操作系统可能会暴露不同的内核系统调用。这意味着应用程序对内核的任何调用都不会执行预期的操作。这显然是一个问题。然而,目标内核可能能够提供“ABI 兼容层”;内核(假设是 FreeBSD 内核)可以检测到您正在尝试运行 Linux 二进制文件,并且可以在 Linux 内核 ABI 和本机内核 ABI 之间进行转换。
在接下来的问题是库之一; Linux 二进制文件希望能够加载特定版本的 glibc,该版本可能不存在于托管操作系统中。这可以通过复制所需的库来解决。同样,操作系统可能会让您更轻松,例如,通过为这些库提供一个包,使它们易于安装。
毕竟,您的二进制文件可能会运行:-)
早在 90 年代,Linux 就有一个 iBCS 模块,可以实现这种功能。例如,它使得在 Linux 上运行 SCO Unix 程序成为可能。我在我的机器上运行了 SCO Unix Oracle 作为概念证明。它工作得很好!显然没有供应商支持,所以它不适合生产:-)
现在,Linux 在这个领域拥有巨大的立足点,其他操作系统尝试添加兼容性层,以允许 Linux 程序在其操作系统上运行。
因此,如果您的操作系统支持是,并且如果您正确安装和配置它,那么您可能能够从另一个 Unix 运行一些程序。
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |