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


Answers:


159

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

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

构建是由编译和链接以及可能的其他任务(如安装程序创建)组成的序列。

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


19

来自维基百科

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

虽然对于简单程序,该过程由一个要编译的文件组成,但对于复杂软件,源代码可以由许多文件组成,并且可以以不同方式组合以产生许多不同版本。


9

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

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

7

它们经常被用来指同一件事。但是,“构建”也可能意味着编译和链接整个应用程序(例如在C和C ++的情况下)或什至更多的整个过程,其中包括

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

有像Maven这样的系统,它通过生命周期的概念对此进行了概括,该概念由几个阶段组成,产生了不同的工件,可能使用了前几个阶段的结果和工件。


5

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


2

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

可以将构建看作是更一般的过程,包括检出源代码,为编译的工件创建目标文件夹,检查依赖项,选择要编译的内容,运行自动化测试,创建tar / zip /发行版,推送到ftp。等

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.