-
指令集不同
同一份 x86-64 CPU,Windows 程序里调的是 Win32/Win64 ABI(寄存器约定、调用方式、系统调用号),Linux 用的是 System V ABI。 -
文件格式不同
Windows 可执行文件是 PE(Portable Executable),Linux 只认 ELF(Executable and Linkable Format)。Linux 内核看到.exe的 PE 头直接拒绝加载。 -
系统 API 不同
程序里CreateFileA、MessageBoxA、DirectX全是 Windows 特有 API;Linux 没这些函数入口,运行时一链接就崩。 -
运行时依赖不同
Windows 程序依赖kernel32.dll、user32.dll、msvcrt.dll;Linux 找不到这些 DLL 就会报 “file not found”。
→ 因此需要 翻译层(Wine、Proton、QEMU 用户态模拟、虚拟机)把 PE→ELF、Win32→Linux syscall、DLL→.so 全部“同声传译”,程序才能跑。

被折叠的 条评论
为什么被折叠?



