C语言编译链接生成可执行文件四大步骤:预处理->编译->汇编->链接
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编译链接生成可执行文件四大步骤:预处理->编译->汇编->链接相关的知识,希望对你有一定的参考价值。
一、编译过程简介
编译过程可以分为4部分内容组成
预处理器->编译器->汇编器->链接器
1、预处理器
(1)、处理所有的注释,以空格代替
(2)、讲所有的#define删除,并且展开所有的宏定义
(3)、处理条件编译指令#if,#ifdef、#elif,#else、#endif
(4)、处理#include,展开文件包含
(5)、保留编译器需要使用#pragma指令
预处理指令示例:
gcc -E file.c -o file.i
2、编译器
(1)、对预处理文件进行语法分析、词法分析、语义分析
语法分析:分析表达式是否遵循语法规则
词法分析:分析关键字,标识符,立即数是否合法
语义分析:在语法分析基础上进一步分析表达式是否合法
(2)、分析结束后进行代码优化生成相应的汇编代码文件
编译指令示例:
gcc -S file.i -o file.s
3、汇编器
(1)、汇编器将汇编代码转变为机器可以执行的指令,也就是机器指令
(2)、每条汇编指令几乎都对应一条机器指令
汇编指令示例:
gcc - c file.s -o file.o
二、链接过程简介
链接是指将目标文件最终生成可执行文件
根据链接方式的不同,链接过程可以分为:
1、静态链接:目标文件直接进入可执行文件
2、动态链接:在程序启动后才动态加载目标文件
链接器的意思:链接器的主要作用是把各个模块之间相互引用部分处理好,使得各个模块之间能够正确的链接
1、静态链接: 由链接器在链接时将库的内容直接加入到可执行程序中
2、动态链接:
(1)、可执行程序在运行时才动态加载库进行连接
(2)、库的内容不会进入可执行程序
以上是关于C语言编译链接生成可执行文件四大步骤:预处理->编译->汇编->链接的主要内容,如果未能解决你的问题,请参考以下文章