编译代码和可执行代码之间有什么区别?

时间:2010-02-22 10:33:01

标签: build compilation terminology

我总是可以互换地使用术语编译构建

这些术语到底意味着什么?

6 个答案:

答案 0 :(得分:140)

编译是将源代码转换为目标代码的行为。

链接是将目标代码与库组合成原始可执行文件的行为。

构建是由编译和链接组成的序列,可能还有其他任务,例如安装程序创建。

许多编译器在编译源代码后自动处理链接步骤。

答案 1 :(得分:17)

来自wikipedia

  

在计算机软件领域,术语“构建”指的是将源代码文件转换为可以在计算机上运行的独立软件工件的过程,或者是这样做。软件构建最重要的步骤之一是编译过程,其中源代码文件被转换为可执行代码。

     

对于简单程序,该过程包含一个正在编译的文件,对于复杂的软件,源代码可能包含许多文件,并且可能以不同的方式组合以生成许多不同的版本。

答案 2 :(得分:8)

构建可以看作是一个脚本,它包含许多步骤 - 其中主要的步骤是编译代码。 其他人可能

  • 运行测试
  • 报告(例如报道)
  • 静态分析
  • 构建前和构建后的步骤
  • 在某些文件上运行自定义工具
  • 创建安装
  • 标记它们并将它们部署/复制到存储库

答案 3 :(得分:7)

它们通常用来表示同样的事情。但是,“构建”也可能意味着编译和链接整个应用程序(例如C和C ++)甚至更多,包括其他应用程序的完整过程

  • 包装
  • 自动(单元和/或集成)测试
  • 安装程序生成
  • 安装/部署
  • 文档/网站生成
  • 报告生成(例如测试结果,报道)。

有像Maven这样的系统,它用生命周期的概念来概括,它包含几个阶段,产生不同的工件,可能使用前一阶段的结果和工件。

答案 4 :(得分:5)

根据我的经验,我会说“编译”是指将一个或多个人类可读的源文件转换为字节代码(C中的目标文件),而“构建”则指的是编译,链接和其他任何内容的整个过程。需要完成整个包或项目。

答案 5 :(得分:2)

大多数人可能会互换使用这些术语。 您可以看到一个细微差别:编译只是通过编译器传递一些源文件的步骤(gcc,javac,等等)。

构建可以被视为检查源的更一般过程,为编译的工件创建目标文件夹,检查依赖关系,选择必须编译的内容,运行自动化测试,创建tar / zip / ditributions,推送到ftp等...