程序在其生命周期中的不同格式
程序的生命周期
- C语言
- 机器语言指令
- 按照可执行目标文件打包
- 以二进制磁盘文件存放
从源文件到目标文件
即生命周期的 1 ~ 3阶段。
执行程序
在Unix上,这一转化由编译器驱动程序完成。
gcc -o hello hello.c
四阶段
-
预处理器 cpp
- 根据 # 开头的命令,修改C程序的文本
- 得到 .i 文本文件
例如 #include,将头文件的内容直接插入到程序文本中
-
编译器 ccl
- 翻译成汇编语言程序
- 得到 .s 文本文件
-
汇编器 as
-
翻译成机器指令语言
-
将指令打包成可重定位目标程序
-
得到 .o 二进制文件
在文本编辑器中打开 .o 文件,将看到一堆乱码
-
-
链接器 ld
每个C编译器都提供标准C库,库函数以已经预编译好的.o文件存在。
-
将库函数的 .o 文件与原 .o 文件进行合并
-
得到可执行文件
在Unix中,可执行文件无后缀;在win中为.exe
-
文件类型
汇编器之前的文件,都是文本文件;
汇编器之后的文件,都是二进制文件。
GNU项目
- EMACS编辑器
- GCC编辑器
- GDB调试器
- 汇编器
- 链接器
- 处理二进制文件工具
- 其他部件
浙公网安备 33010602011771号