面试被问到C编译原理,所以回来整理一下。
编译主要分为四个大步骤:预编译、编译(.s、.asm)、汇编(.obj、.o、.a、.ko)、链接(.exe、.elf、.axf等),在C/C++中统称为编译。
前面文章 https://blog.csdn.net/a063225/article/details/90181715 介绍过集成开发环境、编译器,这里再说明一下,集成开发环境是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器,调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
编辑器:编写代码的一些窗口。
编译器:检查用户代码的一些语法错误,将其编译成汇编代码。
汇编器:将编译出来的汇编文件编译成一定功能的目标代码。
连接器:将目标代码连接成可执行文件。
(一)预编译
使用的gcc命令是:gcc –E
对应于预处理命令cpp
a. 宏定义指令:将所有的#define删除,并且展开所有的宏定义。
b. 条件编译指令:处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等。
c. 头文件包含指令:处理#include 预编译指令,将被