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

Posted

技术标签:

【中文标题】编译代码和可执行代码有啥区别?【英文标题】:What is the difference between compile code and executable code?编译代码和可执行代码有什么区别? 【发布时间】:2011-01-19 14:18:59 【问题描述】:

我总是交替使用 compilebuild 这两个术语。

这些术语究竟代表什么?

【问题讨论】:

***.com/q/2650168/632951 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

来自wikipedia:

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

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

【讨论】:

【参考方案3】:

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

构建可以理解为检查源代码、为编译的工件创建目标文件夹、检查依赖项、选择要编译的内容、运行自动化测试、创建 tar / zip / 分发包、推送到 ftp 等...

【讨论】:

【参考方案4】:

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

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

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

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于编译代码和可执行代码有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

反编译和反汇编有啥区别?

C语言编译器icc与gcc编译出来的执行文件有啥区别?

编译器和链接器有啥区别?

JAVA编程中source code和bytecode有啥区别,不要太详细的

可执行格式有啥区别?

对于模块加载:ES6CommonJSAMDCMD的区别