为什么C平台依赖?

Ari*_*des 9 c

为什么必须为每个架构重新编译C?这不是最终的比特和字节,无论如何加载和跳转?每个架构是否基本上都以相同的方式通过最基本的命令?

Chr*_*ung 11

  1. 不同的CPU具有不同的指令体系结构(例如,x86与ARM).
    • 早期的Mac使用摩托罗拉68k架构; 后来使用PowerPC; 后来还使用了x86.在每次转换期间,开发人员必须将其可执行文件作为胖二进制文件发送,这些二进制文件将包含两种体系结构的对象代码.
  2. 当前的x86 CPU具有32位和64位模式.
    • 这就是为什么你有32位和64位版本的Windows,Ubuntu等.
  3. 不同的操作系统提供不同的系统调用,库等.
    • 不同的OS 版本也可以提供不同的系统调用,库等(尽管OS供应商的目标是尽可能向后兼容).
  4. 即使在相同的操作系统上,也不能保证不同编译器之间的调用约定相同.
    • 即使在相同的OS上,也可以使用不同的可执行文件格式.例如,在许多Unix系统上,a.out曾经是使用的格式,但大多数最终切换到ELF.在过渡期间,必须以两种格式提供图书馆.