- 4
- 0
- 约1.35万字
- 约 42页
- 2018-03-10 发布于浙江
- 举报
[工学]lec07-Linking
Computer Systems:A Programmer’s Perspective 计算机系统详解Lecture 7 Linking May 27, 2011 Wu junmin (jmwu@ustc.edu.cn) Topics Static linking Dynamic linking 最简单的程序翻译示例 c程序示例 静态链接 程序通过编译驱动器(Compiler Driver)进行翻译和链接: unix gcc -O2 -g -o p main.c swap.c unix ./p 翻译示例程序 编译驱动器 协调翻译和链接过程中的所有步骤. 通常包含在每个编译系统中(如gcc) 激活c预处理器(cpp), 编译器 (cc1), 汇编器 (as), 和链接程序 (ld). 传递相应的参数到各个阶段 示例: 从main.c和swap.c创建可执行程序p: 链接器做些什么? 符号解析 程序定义和引用符号 (变量和函数): 代码: a(); /* reference to symbol a */ 数据: int *xp=x; /* reference to symbol x */ 符号定义存储在符号表中(由编译器). 每个条目包括名字,大小和目标位置. 链接器把每个符号引用关联到唯一的一个符号定义. 重定位 将各个文件中分离的代码段
原创力文档

文档评论(0)