|

楼主 |
发表于 2014-8-5 15:42:29
|
显示全部楼层
本帖最后由 oggplay 于 2014-8-6 10:14 编辑
好吧,第七章开始了,第七章 链接
静态链接的作用:符号解析和重定位
符号解析:将每个符号的引用和符号定义联系起来。
重定位:把每个符号和内存存储位置联系起来,然后修改所有对这些符号的引用,使得他们指向相应的存储位置。
==========================================================================================
例题:http://bbs.fishc.com/thread-50516-1-1.html
unix对多重定义的链接规则:
规则1:不允许有多个强符号。
规则2:如果有一个强符号和多个弱符号,那么选择强符号。
规则3:如果有多个弱符号,那么从这些弱符号中任意选择一个。
强符号:函数和已初始化全局的变量;弱符号:未初始化全局变量。
规则2、3会造成一些不易察觉的运行错误,有些链接器是不会主动发出定义多个符号的警告的。再看例子,IA32机器,double 8个字节,int4个字节,所以2.c中的-0.0会覆盖1.c中x、y的位置。结果是:x=0x0 y=0x80000000。
|
|