本文主要讲述了一个C程序从源代码到目标文件所经过的步骤,介绍了编译系统,预处理、编译、汇编和链接的相关知识。
一、编译系统
一个C程序的生命周期从高级C语言程序开始。想要在系统上执行.c程序,每条C语句都必须翻译为低级的机器语言指令,将这些指令按照可执行目标程序的格式打包,以二进制磁盘文件的形式存放,这就是可以由系统执行的可执行目标文件。这些工作包含如下图所示的四个过程,由编译系统完成。
一般而言,编译系统包括预处理器、编译器、汇编器和链接器。
注意一下上图中各个阶段输出的文件格式是文本文件还是二进制文件。
1.预处理阶段
源代码.c文件和相关的头文件如stdio.h等被预处理器编译为一个.i文件。
预处理过程主要处理那些源代码文件中的以#开头的预处理指令。主要规则如下:
a.删除所有的#define,并展开所有的宏定义;
b.处理所有条件预处理指令,如#if #ifdef #elif #else #endif;
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
学习是年轻人改变自己的最好方式