在OS提到 编译:将源代码生成多个目标模块
链接:将目标模块与他们需要的库链接到一块,形成完整的装入模块
装入:由装入程序将装入模块装入内存
链接方式:
- 静态链接:在程序运行之前,将各个目标模块即他们需要的库函数,链接成一个完整的装配模块,以后不再拆卸。
- 装入时动态链接:在装入内存时,采用边装入边链接的方式。
- 运行时动态链接:模块的链接推迟到运行时判断。
装入方式:
- 绝对装入方式:程序中使用的是绝对地址,将目标模块装入到内存中事先指定的位置。
- 可重定位装入方式:程序中使用的地址是相对地址,使得物理地址和逻辑地址不同
- 动态运行时装入方式:将装入模块装入到内存中任何允许的位置,故可用于多道程序环境;但是不允许程序运行时在内存中移动位置。
在使用gcc编译程序时,编译过程可以分为4个阶段
预处理:处理源文件中的#ifdef、#include、#define 预处理命令
gcc -E test.c -o test.i
编译:将*.i文件,编译生成汇编文件*.s
gcc -S test.s -o test.o
汇编:将输入的汇编文件*.s转换成二进制机器代码*.o
gcc -c test.s -o test
链接:将二进制机器码生成可执行文件。
阅读(688) | 评论(0) | 转发(0) |