为什么在 Windows 下编译的 C 程序不能在 Linux 下运行?
Windows 可执行文件是 PE(Portable Executable),Linux 只认 ELF(Executable and Linkable Format)。同一份 x86-64 CPU,Windows 程序里调的是 Win32/Win64 ABI(寄存器约定、调用方式、系统调用号),Linux 用的是 System V ABI。(Wine、Proton、QEMU 用户态模拟、虚拟机)把 PE→ELF、Win32→Linux syscall、DLL→.so 全部“同声传译”,程序才能跑。
原创
2025-07-25 12:58:32 ·
228 阅读 ·
0 评论