美文网首页
程序编译与执行的那些事(1):基本过程

程序编译与执行的那些事(1):基本过程

作者: 养皮卡丘的琪酱 | 来源:发表于2018-09-18 14:13 被阅读10次

程序编译一般有如下几个过程:

  • 预处理
  • 编译
  • 汇编
  • 链接

程序编译阶段

预处理阶段

(预处理器)对包含源代码的文本文件进行处理,如包含头文件、引入宏定义等,生成预处理文件(.i)。
clang生成预处理文件:
$ clang -E test.c -o test.i

-E:只运行预处理步骤
-o:输出到目标文件

编译阶段

(编译器)将预处理文件(.i)翻译成汇编文件(.s)。
汇编文件的每条语句都以一种标准的文本格式确切地描述一条低级机器语言指令,是不同高级语言的通用输出语言。
$ clang -S test.i

-S:只运行预处理和编译步骤

汇编阶段

(汇编器as)将汇编文件翻译成机器语言,将翻译后的指令打包成目标文件(.o)。
$ clang -c test.s

-c:只运行预处理,编译和汇编步骤

链接阶段

详见程序编译与执行的那些事(2):静态链接库、动态链接库

相关文章

  • 程序编译与执行的那些事(1):基本过程

    程序编译一般有如下几个过程: 预处理 编译 汇编 链接 程序编译阶段 预处理阶段 (预处理器)对包含源代码的文本文...

  • java编译过程

    1、java编译过程与c/c++编译过程不同java编译程序将java源程序编译成jvm可执行代码--java字节...

  • 汇编

    一、编译过程 程序的本质:执行过程 程序在硬盘(010101)->双击->装载进内存 寄存器与内存: 通常,CPU...

  • ☆技术问答集锦(三)

    1 Java基础 1.1 编译型语言VS解释型语言 编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成...

  • Makefile入门

    0. 作用 Makefile文件告诉Make怎样编译和连接成一个程序。 1. Makefile基本语法与执行 示例...

  • 反编译软件+sql注入方式

    反编译 什么是反编译?高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。 -反编译的工具 1、 jsfi...

  • 类加载机制

    1.类加载的时机与作用 一段java程序在被执行的过程中,需要经历以下几个阶段 1.编译器将.java文件编译成....

  • Java的运行原理

    java程序执行过程: .java→.class→机器码java编译器 (编译) → 虚拟机(解释执行) → 解...

  • 编译型语言 解释型语言

    编译型语言 在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用...

  • jvm 基本常识、及使用的是什么JDK和JAVA虚拟机?

    一、 JVM基本常识 程序的执行方式 主要有三种:静态编译执行、动态编译执行、动态解释执行 [图片上传失败...(...

网友评论

      本文标题:程序编译与执行的那些事(1):基本过程

      本文链接:https://www.haomeiwen.com/subject/odgunftx.html