C/C++何时需要编译?

这个问题假定所写的C/C++代码是可移植的,不使用平台特定的代码。

我开始学习C和如何编译代码。我知道C是为了避免汇编语言而创建的,因为程序必须重写为不同的硬件配置。我也知道C/C++必须重新编译为不同的计算机配置。

这让我想知道什么构成一个新的配置。我可以从互联网下载可执行文件,工作正常,互联网显然不知道我的硬件配置。必须为每个不同的CPU编译代码?为一个操作系统版本编译的代码是否适用于另一个? (Windows 7代码是否适用于Windows 8而无需重新编译?)

简而言之,什么条件定义了一个必须编译的新配置?

C和C是编译语言。 compiled language是一种编程语言,它的实现通常是编译器 – 从源代码生成机器代码的翻译器,而不是解释器。机器代码是由计算机处理器直接执行的一组指令。程序与硬件/软件组合不兼容有两件事情。最重要的一个在机器(硬件),你试图运行你的二进制文件。例如,您需要知道在64位CPU上编译的程序无法在32位或ARM处理器上运行。

computer architecturesdozens和子架构。主要架构是x86,x86_64(amd64),也可能是ARM。如果您使用的语言代码将被编译为机器代码,则只能在与您的CPU兼容的计算机上分发二进制工件(除非是交叉编译)。

硬件不是平台之间的唯一区别。通常你的代码是在操作系统处理之前才能处理的。执行此作业的操作系统的一部分称为application Binary Interface.即使在同一台机器上,由于Win32可执行文件不同,因此无法运行在Linux上使用Windows编译的ELF二进制文件。

翻译自:https://stackoverflow.com/questions/20746755/when-does-c-c-have-to-be-compiled

转载注明原文:C/C++何时需要编译?