This question already has answers here:
Is C++ platform dependent?

(7个答案)


7年前关闭。




为什么必须为每种体系结构重新编译C?难道不是全部都变成了位和字节并加载和跳跃了吗?难道每个架构本质上都不会以相同的方式执行最基本的命令吗?

最佳答案

  • 不同的CPU具有不同的指令架构(例如x86与ARM)。
  • 早期的Mac使用的是Motorola 68k架构;后来使用PowerPC;后来又使用x86。在每个这些转换期间,开发人员都必须将其可执行文件作为fat binaries交付,其中将包含两种体系结构的目标代码。
  • 当前的x86 CPU具有32位和64位模式。
  • 这就是为什么您拥有32位和64位版本的Windows,Ubuntu等的原因。
  • 不同的操作系统提供不同的系统调用,库等。
  • 不同的OS版本也可以提供不同的系统调用,库等(尽管OS供应商确实希望尽可能地向后兼容)。
  • 即使在同一操作系统上,也不保证不同编译器之间的调用约定相同。
  • 即使在同一OS上,也可能使用不同的可执行文件格式。例如,在许多Unix系统上,a.out曾经是所使用的格式,但是大多数最终切换为ELF。在过渡期间,必须以两种格式提供库。
  • 10-04 16:00
    查看更多