build和compile有什么区别?


Answers:


34

编译是构建过程的一部分

除了编译之外,构建过程还可以包括测试,打包和其他活动。


19

“构建”是一个相当笼统的术语,它可以指从可编辑的源材料(源代码,脚本,原始数据文件等)到可交付的软件产品所需的任何内容。构建可能(并且通常确实)涉及几个步骤,例如预处理,编译,链接,转换数据文件,运行自动化测试,打包等。

“编译”是更具体的,几乎总是指将源代码作为输入并输出可运行的东西的过程,通常是物理机或虚拟机的机器代码,或者是其他语言的源代码。


9

这些术语通常可以互换使用,但是我将通过以下方式对其进行区分:

  • 在准备发布应用程序时会完成构建,其中包括编译,打包,测试等。
  • 编译器在将编程语言代码转换为机器代码时可以随时进行编译。

因此,编译实际上是构建的子集。


1
“在准备发布应用程序时就完成了构建” –不要告诉不断的集成人群;)或者其他任何自动构建的狂热用户。

1
@delnan:同意。持续集成会在应用程序的整个生命周期内创建许多“构建”。但是,任何或所有这些内部版本都可以用于准备公开发布。这取决于您的构建,测试和批准过程。
伯纳德

3
好吧,根据不断交付的人群,这些构建中的每一个都应该准备发布。但是实践却相反,通常,“构建”可以通过使软件准备好运行和测试来达到任何目的。例如,调试版本。或者检查您的更改没有破坏1600万个测试中的任何一个。

2
@delnan-测试失败的构建如何处理?按照连续交付的标准,它是一个构建版本,尚未发布:)
Oded

2

编译是由编译器完成的,构建过程可能更复杂。

例如。在C ++中,要构建项目,您需要预处理器(源文件的预处理);编译器(源文件的编译);链接器(将所有内容合并为可执行文件-编译后的代码,图标,字符串和其他资源在一起)

因此,通常的编译是将以​​一种语言编写的代码翻译为另一种语言(例如,机器代码)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.