兼容层

在軟體工程领域，相容層是一種介面，可以讓許為舊系統或異質系統編譯的二進位程式檔在主機系統上運行。相容層將異質系統的系統呼叫轉換為主機系統的原生系統呼叫。如配合異質系統的一些函式庫，通常就可以讓為異質系統編譯的二進位程式檔在主機系統上執行。硬體相容層則包含允許硬體模擬的工具。

 软件 
一些例子：
 Wine，允许在类Unix系统上使用一个程序加载器和是现在DLL中的Windows API运行部分微软Windows二进制文件。
 Windows的应用程序兼容层（Application Compatibility Toolkit）能尝试运行编写拙劣或者为早期平台编写的应用程序。
 ，在Windows、Mac OS X和类Unix系统上以原生外观和体验运行某些Linux二进制文件。
 ，在Windows 98/Me运行Windows 2000/XP程序。
 ，在Windows、Mac OS X和Linux中运行基于68k的“经典”Mac OS程序。
 ，在Android系统上运行Apple iOS程序。
 ，转换Bionic到glibc调用的函数库。
 Darling，在Linux上尝试运行Mac OS X和Darwin二进制文件的转换层。
 内核中的兼容层
 FreeBSD的Linux兼容层，允许专为Linux构建的二进制文件在FreeBSD以与原生FreeBSD API层相同的方法运行FreeBSD还有一些类Unix系统的仿真，包括NDIS、NetBSD、PECoff、SVR4和FreeBSD对不同CPU的版本。
 NetBSD有一些类Unix系统仿真。
 Mach和Darwin二进制文件兼容，为NetBSD/powerpc和NetBSD/i386 。
 Windows Subsystem for Linux提供一个Linux兼容的内核接口，微软开发它并且不包含Linux代码，Ubuntu用户模式二进制文件运行在它上面。
 PEACE项目（也称COMPAT_PECOFF）为NetBSD提供Win32兼容层。此项目目前不活跃。

相容層並非完整模擬其他作業系統的硬體，所以沒有那麼複雜，也降低效能損耗，某些程式甚至運行得比原生環境更快。例如，部分 Linux 應用程式在 FreeBSD 的 Linux 相容層上，效能可能超越其在紅帽 Linux 上的表現；有時也會在Wine上面進行效能測試以與 Windows系統進行比較。BenchMark-0.9.5  - The Official Wine Wiki

然而，即使在相似的系統上，實作相容層可能相當繁瑣複雜，NetBSD MIPS架構版本中的IRIX二进制相容層就是一個例子。

相容層的基本要求是主機系統的 CPU 必須能向上相容目標系統。例如，由於 Windows 作業系統依賴 x86 架構的 CPU，其相容層無法在PowerPC硬體上運作；在這種異質架構下，必須進行完全模擬。

 硬件 
硬件兼容层工具涉及到硬件模拟。部分兼容层涉及到，因为接线可以对特定计算机总线提供一些兼容性。

 参见 
 Hypervisor

 仿真器

 系统平台
 Shim

 参考资料 

 外部链接 
 Windows XP应用程序兼容技术（微软公司Dave Morehouse和Todd Phillips，2001年6月1日）