编译环境 运行环境
源文件(.c文件) —————————可执行文件(.exe文件)——————— 计算结果
一、编译环境:
编译环境下编译器与链接器发挥各自的作用,其各自的主要操作如下
编译器: Linux 环境下 (文件格式转变)
1. 预编译 (处理文本) test.c——>test.i
① 包含的头文件
② 删除注释(使用空格替代)
③ 替换#define 中的内容
2. 编译 (把C语言代码转变成汇编代码) test.i——>test.s
① 语法分析
② 词法分析
③ 语义分析
④ 符号汇总 (符号包括 函数名)
3. 汇编 (把汇编代码转换成二进制指令) test.s——>test.o
①形成符号表
(如 main ox 0010
ADD ox 0200)
链接器: test.s——>test.exe
1.合并段表
2.符号表的合并与重定义
二、运行环境:
1.先将程序植入内存中(一般由操作系统完成)
2. 程序的执行开始,接着调用main函数
3.. 开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack),存储函数的局部变量和返回 地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程 一直保留他们的值。
4. 终止程序。正常终止main函数;也有可能是意外终止。